OSDN Git Service

libc: mips: Fix setjmp/longjmp for MIPS64 N64 ABI
authorWaldemar Brodkorb <wbx@openadk.org>
Wed, 29 Jan 2014 17:58:56 +0000 (18:58 +0100)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Sun, 2 Feb 2014 20:35:50 +0000 (21:35 +0100)
commit70a04a287a2875c82e6822c36e071afba5b63a62
treed7df1a2e331e69fd3e3f306084a1eeea5eb6faf0
parentd31846a1b993cfe4b7d983db0e5c140dac3b0220
libc: mips: Fix setjmp/longjmp for MIPS64 N64 ABI

When booting a Linux system with qemu-system-mips64 the execution
of $(pwd) in the ash shell triggers a segmentation fault. Ash uses
setjmp/longjmp for exception handling.

After looking at the glibc implementation,
I found some differences, with this patch tries to resolve.
Now the system boots up fine and no segmentation faults occur.

The global pointer should be restored and the types for the
register values should be wide enough.

See:
http://www.cygwin.com/ml/libc-alpha/2003-03/msg00363.html

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libc/sysdeps/linux/mips/bits/setjmp.h
libc/sysdeps/linux/mips/setjmp.S
libc/sysdeps/linux/mips/setjmp_aux.c