Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 4 Jan 2002 19:50:54 +0100
From:      Bernd Walter <ticso@cicely8.cicely.de>
To:        Daniel Eischen <eischen@pcnet1.pcnet.com>
Cc:        alpha@FreeBSD.ORG
Subject:   Re: {get,set,make,swap}context for alpha
Message-ID:  <20020104195054.E8703@cicely8.cicely.de>
In-Reply-To: <Pine.SUN.3.91.1020104124905.23748A-100000@pcnet1.pcnet.com>
References:  <20020104182107.D8703@cicely8.cicely.de> <Pine.SUN.3.91.1020104124905.23748A-100000@pcnet1.pcnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 04, 2002 at 12:56:45PM -0500, Daniel Eischen wrote:
> On Fri, 4 Jan 2002, Bernd Walter wrote:
> > On Fri, Jan 04, 2002 at 05:46:13PM +0100, Bernd Walter wrote:
> > > What I found so far with the core dump is that proc3 is called with a
> > > bogus t12 value.
> > > I still have to search why.
> 
> Thanks for the previous fix to setcontext; we seem to have
> figured out the same fix for getcontext :-).  I was in the
> process of making setcontext a NESTED function, but had to
> go to work :(.

It wouldn't work as NESTED, because it expects values on the
stack for return which are not there after switching.
NESTED does the same as my change, but at the beginning and end of
the function.

> Cool, it's working!  I was unsure about makecontext being correct.
> I should probably add a test that passes more than 6 arguments
> to a function to be sure that the remaining arguments are correctly
> pulled off the stack (the first 6 being in registers).

Good point.

I asume FP registers also need to be handled.
At least fs and fa registers.

> > Signaling does not work, yet:
> > ticso@cicely9# ./test_context
> > Send a few SIGUSR1's to pid 65430
> > Main: setting context to myself.
> > Main: returned from setcontext.
> > Proc3 called with arguments (1)
> > Proc3: working...
> > Proc3: working...
> > Proc3: working...
> > Proc3: working...
> > Proc3: working...
> > Proc3: returned from getcontext, count 1
> > Got signal 30, uc_rev 0x0
> > Assertion failed: (setcontext(ucp) == 0), function sighandler, file test_context.c, line 77.
> 
> The kernel needs to be patched (machdep.c) to set ucp->mc_context.mc_rev
> to denote it is a signal frame and not a trap frame.  The test program
> should account for an unpatched kernel by setting mc_rev to denote a
> signal frame.  Make sure that it's being set correctly, or else
> setcontext will return -1.

Ah.
I hadn't looked into the complete patch yet.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso@cicely.de         Usergroup           info@cosmo-project.de


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?20020104195054.E8703>