1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*
- * libc/sysdeps/linux/microblaze/longjmp.S -- `longjmp' for microblaze
- *
- * Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
- * Copyright (C) 2001 NEC Corporation
- * Copyright (C) 2001 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
- * directory of this archive for more details.
- *
- * Written by Miles Bader <miles@gnu.org>
- */
- #define _SETJMP_H
- #define _ASM
- #include <bits/setjmp.h>
- #include <clinkage.h>
- .text
- C_ENTRY(__longjmp):
- /* load registers from memory to r5 (arg0)*/
- lwi r1, r5, 0
- lwi r15, r5, 4
- lwi r18, r5, 8
- lwi r19, r5, 12
- lwi r20, r5, 16
- lwi r21, r5, 20
- lwi r22, r5, 24
- lwi r23, r5, 28
- lwi r24, r5, 32
- lwi r25, r5, 36
- lwi r26, r5, 40
- lwi r27, r5, 44
- lwi r28, r5, 48
- lwi r29, r5, 52
- lwi r30, r5, 56
-
- addi r3, r0, 1 // return val
- rtsd r15, 8 // normal return
- nop
- C_END(__longjmp)
- .weak C_SYMBOL_NAME(longjmp)
- C_SYMBOL_NAME(longjmp) = C_SYMBOL_NAME(__longjmp)
- .weak C_SYMBOL_NAME(siglongjmp)
- C_SYMBOL_NAME(siglongjmp) = C_SYMBOL_NAME(__longjmp)
- .weak C_SYMBOL_NAME(__sigprocmask)
- C_SYMBOL_NAME(__sigprocmask) = C_SYMBOL_NAME(sigprocmask)
|