OSDN Git Service

mips: do not save variables in "hi" or "lo" across system calls
authorDaniel Jacobowitz <dan@codesourcery.com>
Fri, 25 Sep 2009 22:48:39 +0000 (18:48 -0400)
committerMike Frysinger <vapier@gentoo.org>
Sat, 26 Sep 2009 11:48:10 +0000 (07:48 -0400)
The kernel does not save these registers across system calls.  GCC 4.4
has gotten more aggressive about using them for temporary variables, so
this shows up as intermittent crashes if you use a recent compiler.

Signed-off-by: Daniel Jacobowitz <dan@codesourcery.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
libc/sysdeps/linux/mips/bits/syscalls.h

index 3639913..28b0f91 100644 (file)
 })
 
 #define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
-       "$14", "$15", "$24", "$25", "memory"
+       "$14", "$15", "$24", "$25", "hi", "lo", "memory"
 
 #else /* N32 || N64 */
 
 })
 
 #define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
-       "$14", "$15", "$24", "$25", "memory"
+       "$14", "$15", "$24", "$25", "hi", "lo", "memory"
 
 #endif