123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /*
- * 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)
- libc_hidden_def(__longjmp)
|