diff options
Diffstat (limited to 'libc/sysdeps')
-rw-r--r-- | libc/sysdeps/linux/v850/crt0.S | 19 | ||||
-rw-r--r-- | libc/sysdeps/linux/v850/setjmp.S | 17 |
2 files changed, 23 insertions, 13 deletions
diff --git a/libc/sysdeps/linux/v850/crt0.S b/libc/sysdeps/linux/v850/crt0.S index 7bfa9e004..2013c3b54 100644 --- a/libc/sysdeps/linux/v850/crt0.S +++ b/libc/sysdeps/linux/v850/crt0.S @@ -1,8 +1,8 @@ /* * libc/sysdeps/linux/v850/crt0.S -- Initial program entry point for linux/v850 * - * Copyright (C) 2001 NEC Corporation - * Copyright (C) 2001 Miles Bader <miles@gnu.org> + * Copyright (C) 2001,2002 NEC Corporation + * Copyright (C) 2001,2002 Miles Bader <miles@gnu.org> * * This file is subject to the terms and conditions of the GNU Lesser * General Public License. See the file COPYING.LIB in the main @@ -25,20 +25,21 @@ C_ENTRY(start): mov r7, r8 // Arg 2: envp mov r6, r10 // skip argc elements to get envp start -1: add 4, r8 - add -1, r10 - bp 1b + add 1, r10 // ...plus the NULL at the end of argv + shl 2, r10 // Convert to byte-count to skip + add r10, r8 // Zero bss area, since we can't rely upon any loader to do so mov hilo(C_SYMBOL_NAME(edata)), ep mov hilo(C_SYMBOL_NAME(end)), r10 -2: sst.w r0, 0[ep] +2: cmp ep, r10 + be 3f + sst.w r0, 0[ep] add 4, ep - cmp ep, r10 - bne 2b + br 2b // Load CTBP register - mov hilo(C_SYMBOL_NAME(_ctbp)), r19 +3: mov hilo(C_SYMBOL_NAME(_ctbp)), r19 ldsr r19, ctbp // Load GP diff --git a/libc/sysdeps/linux/v850/setjmp.S b/libc/sysdeps/linux/v850/setjmp.S index 460706ec6..87a5e3833 100644 --- a/libc/sysdeps/linux/v850/setjmp.S +++ b/libc/sysdeps/linux/v850/setjmp.S @@ -1,8 +1,8 @@ /* * libc/sysdeps/linux/v850/setjmp.S -- `setjmp' for v850 * - * Copyright (C) 2001 NEC Corporation - * Copyright (C) 2001 Miles Bader <miles@gnu.org> + * Copyright (C) 2001,2002 NEC Corporation + * Copyright (C) 2001,2002 Miles Bader <miles@gnu.org> * * This file is subject to the terms and conditions of the GNU Lesser * General Public License. See the file COPYING.LIB in the main @@ -18,7 +18,16 @@ #include <clinkage.h> .text -C_ENTRY(__sigsetjmp): +C_ENTRY(setjmp): + mov 1, r7 /* Save the signal mask. */ + br C_SYMBOL_NAME(__sigsetjmp) + + .globl C_SYMBOL_NAME(_setjmp) +C_SYMBOL_NAME(_setjmp): + mov 0, r7 /* Don't save the signal mask. */ + + .globl C_SYMBOL_NAME(__sigsetjmp) +C_SYMBOL_NAME(__sigsetjmp): /* Save registers */ mov r6, ep sst.w sp, 0[ep] @@ -36,4 +45,4 @@ C_ENTRY(__sigsetjmp): sst.w r29, 48[ep] /* Make a tail call to __sigjmp_save; it takes the same args. */ jr C_SYMBOL_NAME(__sigjmp_save) -C_END(__sigsetjmp) +C_END(setjmp) |