1/* These are predefined by new versions of GNU cpp. */ 2 3#ifndef __USER_LABEL_PREFIX__ 4#define __USER_LABEL_PREFIX__ _ 5#endif 6 7/* ANSI concatenation macros. */ 8 9#define CONCAT1(a, b) CONCAT2(a, b) 10#define CONCAT2(a, b) a ## b 11 12/* Use the right prefix for global labels. */ 13 14#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) 15 16 .global SYM (setjmp) 17 .global SYM (_setjmp) 18 .global SYM (longjmp) 19 20 .section .text,"x" 21 .align 4 22SYM (_setjmp): 23SYM (setjmp): 24 st.d 0(r2),r20 25 st.d 8(r2),r22 26 st.d 16(r2),r24 27 st.d 24(r2),r26 28 st.d 32(r2),r28 29 st.d 40(r2),r30 30 st 48(r2),r1 31 jsr r31(r0),r0 32 addu 0,r0,r2 33 34 .section .text,"x" 35 .align 4 36SYM (longjmp): 37 ld.d 0(r2),r20 38 ld.d 8(r2),r22 39 ld.d 16(r2),r24 40 ld.d 24(r2),r26 41 ld.d 32(r2),r28 42 ld.d 40(r2),r30 43 bcnd L1,r4,ne0.w 44 ld 48(r2),r1 45 46 jsr r31(r0),r0 47 addu 1,r0,r2 48L1: 49 jsr r31(r0),r0 50 addu r4,r0,r2 51