From 70a04a287a2875c82e6822c36e071afba5b63a62 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Wed, 29 Jan 2014 18:58:56 +0100 Subject: 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 Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/mips/setjmp.S | 1 + 1 file changed, 1 insertion(+) (limited to 'libc/sysdeps/linux/mips/setjmp.S') diff --git a/libc/sysdeps/linux/mips/setjmp.S b/libc/sysdeps/linux/mips/setjmp.S index 6d80a3190..59b76cca6 100644 --- a/libc/sysdeps/linux/mips/setjmp.S +++ b/libc/sysdeps/linux/mips/setjmp.S @@ -52,6 +52,7 @@ __sigsetjmp: PTR_LA t9, __sigsetjmp_aux #if _MIPS_SIM != _MIPS_SIM_ABI32 .cpreturn + move a4, gp #endif jr t9 #else -- cgit v1.2.3