[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
uwe%NetBSD.org@localhost | NetBSD/toaster:
http://snark.ptc.spbu.ru/~uwe/ | we wish the toaster to be happy too
Main Index |
Thread Index |