[parisc-linux] 64 userspace

Carlos O'Donell carlos@baldric.uwo.ca
Wed, 15 Jan 2003 14:26:34 -0500


> > > 1) Kernel -- design and implement 64-bit system calls.
> > 
> > Currently, 64-bit kernels return bogus sigcontext structures to our
> > 32-bit userspace, they stuff the sigcontext with 64-bit registers when
> > it is only expecting 32-bits. It seems like sigcontext should be
> > expanded to have 64-bits per register for both 32 and 64 bit kernels?
> > This is definately an ABI breakage. Though it's funny that not many
> > programs are broken under 64-bit kernels, but I guess that without
> > *context() calls implemented for HPPA in glibc, the returned ucontext is
> > not used (except for that weird LISP interpreter that Krystof was
> > porting).
> 
> I wonder if this isn't the problem with expect.
> 

Shazam! Ballz in your court. I ran across this problem in the summer
when working with Krystof. He actually caused my C3K to crash, different
issue though :}

If you look at parisc/kernel/signal.c and look for the word "HACK"
you'll see what I mean. There are few expletives that need to be cleaned
up. Randolph had suggested adding thread personalities so we can tell
what the userspace looks like and choose the right sigcontext to send
back. However, it seems that truncating the 64-bit regs is a crazy thing
to do since you might lose information.

I'm all for expanding the sigcontext to 64-bits. As a matter of fact
I'll try rebuilding glibc with an expanded sigcontext (remembering that
it has to be changed in the kernel definition and the glibc definition).
Added to that will be the minor hack to your ldwc_align code to fdce the
lock cacheline before usage.

c.