aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arm/lib1funcs.asm
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@codesourcery.com>2005-11-15 14:32:13 +0000
committerDaniel Jacobowitz <drow@gcc.gnu.org>2005-11-15 14:32:13 +0000
commit5d7c0add81c2d9ff338e76bf58dce99f9a0410e8 (patch)
tree0cc5b87b3f2c8c3b76db1833ac1ac21ab542efaa /gcc/config/arm/lib1funcs.asm
parent9de61fcb9b63fabbe305dab069bf49d8d1e6195a (diff)
downloadgcc-5d7c0add81c2d9ff338e76bf58dce99f9a0410e8.zip
gcc-5d7c0add81c2d9ff338e76bf58dce99f9a0410e8.tar.gz
gcc-5d7c0add81c2d9ff338e76bf58dce99f9a0410e8.tar.bz2
lib1funcs.asm (div0): Call raise instead of making syscalls.
* config/arm/lib1funcs.asm (div0) [L_dvmd_lnx]: Call raise instead of making syscalls. * config/arm/linux-eabi.h (CLEAR_INSN_CACHE): Define. Set r7 also. From-SVN: r107018
Diffstat (limited to 'gcc/config/arm/lib1funcs.asm')
-rw-r--r--gcc/config/arm/lib1funcs.asm20
1 files changed, 3 insertions, 17 deletions
diff --git a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
index 364d9fe..8494a97 100644
--- a/gcc/config/arm/lib1funcs.asm
+++ b/gcc/config/arm/lib1funcs.asm
@@ -989,29 +989,15 @@ LSYM(Lover12):
#ifdef L_dvmd_lnx
@ GNU/Linux division-by zero handler. Used in place of L_dvmd_tls
-/* Constants taken from <asm/unistd.h> and <asm/signal.h> */
+/* Constant taken from <asm/signal.h>. */
#define SIGFPE 8
-#define __NR_SYSCALL_BASE 0x900000
-#define __NR_getpid (__NR_SYSCALL_BASE+ 20)
-#define __NR_kill (__NR_SYSCALL_BASE+ 37)
-#define __NR_gettid (__NR_SYSCALL_BASE+ 224)
-#define __NR_tkill (__NR_SYSCALL_BASE+ 238)
.code 32
FUNC_START div0
stmfd sp!, {r1, lr}
- swi __NR_gettid
- cmn r0, #1000
- swihs __NR_getpid
- cmnhs r0, #1000
- RETLDM r1 hs
- mov ip, r0
- mov r1, #SIGFPE
- swi __NR_tkill
- movs r0, r0
- movne r0, ip
- swine __NR_kill
+ mov r0, #SIGFPE
+ bl SYM(raise) __PLT__
RETLDM r1
FUNC_END div0