1 /* longjmp for the Blackfin project
3 * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
4 * Copyright (C) 2004 Metrowerks
5 * Based on code from Analog Devices.
7 * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
12 .type ___longjmp,STT_FUNC;
18 [--SP] = R0; /* Put P0 on the stack */
27 R0 = [SP++]; /* Grab P0 from old stack */
28 SP = [P0 + 0x1C]; /* Update Stack Pointer */
29 [--SP] = R0; /* Put P0 on new stack */
30 [--SP] = R1; /* Put VAL arg on new stack */
32 R0 = [P0 + 0x20]; /* Data Registers */
44 R0 = [P0 + 0x44]; /* Loop Counters */
49 R0 = [P0 + 0x4C]; /* Accumulators */
58 R0 = [P0 + 0x5C]; /* Index Registers */
67 R0 = [P0 + 0x6C]; /* Modifier Registers */
76 R0 = [P0 + 0x7C]; /* Length Registers */
85 R0 = [P0 + 0x8C]; /* Base Registers */
94 R0 = [P0 + 0x9C]; /* Return Address (PC) */
101 IF !CC JUMP .Lfinished;
105 .size ___longjmp,.-___longjmp
107 libc_hidden_def(__longjmp)
109 .section .note.GNU-stack,"",%progbits