Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Jan 2002 16:05:25 -0500
From:      Daniel Eischen <eischen@vigrid.com>
To:        alpha@FreeBSD.org
Subject:   {get,set,make,swap}context for alpha
Message-ID:  <3C34C795.74B2B09C@vigrid.com>

next in thread | raw e-mail | index | archive | help
I've got *context implemented and working for i386, but need some
help getting them to work on the alpha.  Anyone here care to give
it a try?  You can get them from:

  http://people.freebsd.org/~deischen/ucontext/uc-libc-sys.diffs
  http://people.freebsd.org/~deischen/ucontext/uc-i386-standalone.tgz
  http://people.freebsd.org/~deischen/ucontext/uc-alpha-standalone.tgz

The standalone tarballs contain a makefile, the source, and a test
program so you don't have to patch your source tree and rebuild
libc to test these functions.  Just do the following:

  $ cd /tmp
  $ fetch http://people.freebsd.org/~deischen/ucontext/uc-alpha-standalone.tgz
  $ tar -xzvf uc-alpha-standalone.tgz
  $ cd alpha
  $ make
  $ ./test_context

The first problem I'm having is that getcontext is getting caught
in an infinite loop.  After the call to sigprocmask, the return
value is checked and the next branch instruction doesn't jump to
the label; it jumps to a few instructions prior and repeats all
over again.

        ...
	CALL(_sigprocmask)			/* see what's blocked */
	mov	s0, a0				/* restore ptr to ucontext */
  -->	beq	v0, Lgc2			/* check for error */
	ldiq	v0, -1				/* return -1 */
	br	Lgcend
  Lgc2:
	...

For more information on what *context are suppose to do, see:

  http://www.opengroup.org/onlinepubs/7908799/xsh/ucontext.h.html

I don't subscribe to this list, so please keep me on the CC list.

Thanks,

-- 
Dan Eischen

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3C34C795.74B2B09C>