# --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: package/.../uclibc/901-hi_lo_system_calls.patch.disable # Copyright (C) 2009 The OpenSDE Project # # More information can be found in the files COPYING and README. # # This patch file is dual-licensed. It is available under the license the # patched project is licensed under, as long as it is an OpenSource license # as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms # of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # --- SDE-COPYRIGHT-NOTE-END --- https://dev.openwrt.org/browser/trunk/toolchain/uClibc/patches-0.9.30.1/901-hi_lo_system_calls.patch [toolchain] Do not save variables in hi or lo across system calls, fixes issues with gcc-4.4 (#5351) The kernel does not save these registers across system calls. GCC 4.4 has gotten more agressive about using them for temporary variables, so this shows up as intermittent crashes if you use a recent compiler. Signed-off-by: Daniel Jacobowitz --- ./libc/sysdeps/linux/mips/bits/syscalls.h.orig +++ ./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