tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: sh3 mcontext change



On Mon, May 26, 2008 at 18:35:24 +0000, Christos Zoulas wrote:

> In article <20080526174637.GE15029%bigmac.stderr.spb.ru@localhost>,
> Valeriy E. Ushakov <uwe%NetBSD.org@localhost> wrote:
> > With NetBSD 5.0 looming, I'd like to fix a problem with sh3 mcontext
> > that's been there since the very beginning - it doesn't have a slot
> > for GBR register.
> >
> > Currently kernel doesn't preserve GBR and userland doesn't use it
> > either - unless you write you own asm code, in which case you lose -
> > which is bad by itself already.  And GBR is also used by TLS, though
> > our ld.so doesn't support it yet.
> >
> > The problem of course is how to change mcontext without breaking ABI
> > (sizeof(struct mcontext)).  Fortunately, it seems we have a slot we
> > can steal - we have _REG_EXPEVT slot in gregs and it seems it's
> > unused.  cpu_setmcontext() in the kernel doesn't set it for obvious
> > reasons and as far as I can tell no code ever examines it - all kernel
> > code that is interested in expevt uses trapframe for that.  Userland
> > code that might be interested in expevt (reason for the trap) already
> > gets the same info via siginfo.
> >
> > So i would like to recycle that currently useless slot for GBR and
> > thus avoid breaking ABI.
> >
> > Just in case - is there anything I'm missing here?  Any
> > objections/comments?
> 
> I think that it is best to look at what other OS's put in their context
> and make all the fixes at once. We can change the size of the mcontext
> if we version get/set/make context and the signal trampoline.

As far as I can tell (reading ABI and ISA docs) everything else i
accounted for (including FPU placeholder) - only GBR is missing.

Linux has an additional sc_ownedfp member in its sigcontext (which
they use for uc_mcontext), but I guess that corresponds to our _UC_FPU
flag.

SY, Uwe
-- 
uwe%NetBSD.org@localhost                          | NetBSD/toaster:
http://snark.ptc.spbu.ru/~uwe/          | we wish the toaster to be happy too


Home | Main Index | Thread Index | Old Index