summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/mips
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@codesourcery.com>2009-09-25 18:48:39 -0400
committerMike Frysinger <vapier@gentoo.org>2009-09-26 07:48:10 -0400
commit18cc8e0e459edf5391016ef76a4ff3108981d86a (patch)
treef4a9c56c3d72709eb98a9f122368760657516816 /libc/sysdeps/linux/mips
parent640f4d29e5753f2d20941f4cf018154ca506c349 (diff)
mips: do not save variables in "hi" or "lo" across system calls
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>
Diffstat (limited to 'libc/sysdeps/linux/mips')
-rw-r--r--libc/sysdeps/linux/mips/bits/syscalls.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/mips/bits/syscalls.h b/libc/sysdeps/linux/mips/bits/syscalls.h
index 363991368..28b0f91e9 100644
--- a/libc/sysdeps/linux/mips/bits/syscalls.h
+++ b/libc/sysdeps/linux/mips/bits/syscalls.h
@@ -261,7 +261,7 @@
})
#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 */
@@ -318,7 +318,7 @@
})
#define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
- "$14", "$15", "$24", "$25", "memory"
+ "$14", "$15", "$24", "$25", "hi", "lo", "memory"
#endif