/* libgcc routines for NEC V850.
- Copyright (C) 1996, 1997, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2002, 2005 Free Software Foundation, Inc.
This file is part of GCC.
/* Allocate space and save registers 2, 20 .. 29 on the stack */
/* Called via: jalr __save_r2_r29,r10 */
__save_r2_r29:
+#ifdef __EP__
mov ep,r1
addi -44,sp,sp
mov sp,ep
sst.w r20,36[ep]
sst.w r2,40[ep]
mov r1,ep
+#else
+ addi -44,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+ st.w r24,20[sp]
+ st.w r23,24[sp]
+ st.w r22,28[sp]
+ st.w r21,32[sp]
+ st.w r20,36[sp]
+ st.w r2,40[sp]
+#endif
jmp [r10]
.size __save_r2_r29,.-__save_r2_r29
.globl __return_r2_r29
.type __return_r2_r29,@function
__return_r2_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 40[ep],r2
addi 44,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ ld.w 16[sp],r25
+ ld.w 20[sp],r24
+ ld.w 24[sp],r23
+ ld.w 28[sp],r22
+ ld.w 32[sp],r21
+ ld.w 36[sp],r20
+ ld.w 40[sp],r2
+ addi 44,sp,sp
+#endif
jmp [r31]
.size __return_r2_r29,.-__return_r2_r29
#endif /* L_save_2 */
/* Allocate space and save registers 20 .. 29 on the stack */
/* Called via: jalr __save_r20_r29,r10 */
__save_r20_r29:
+#ifdef __EP__
mov ep,r1
addi -40,sp,sp
mov sp,ep
sst.w r21,32[ep]
sst.w r20,36[ep]
mov r1,ep
+#else
+ addi -40,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+ st.w r24,20[sp]
+ st.w r23,24[sp]
+ st.w r22,28[sp]
+ st.w r21,32[sp]
+ st.w r20,36[sp]
+#endif
jmp [r10]
.size __save_r20_r29,.-__save_r20_r29
.globl __return_r20_r29
.type __return_r20_r29,@function
__return_r20_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 36[ep],r20
addi 40,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ ld.w 16[sp],r25
+ ld.w 20[sp],r24
+ ld.w 24[sp],r23
+ ld.w 28[sp],r22
+ ld.w 32[sp],r21
+ ld.w 36[sp],r20
+ addi 40,sp,sp
+#endif
jmp [r31]
.size __return_r20_r29,.-__return_r20_r29
#endif /* L_save_20 */
/* Allocate space and save registers 21 .. 29 on the stack */
/* Called via: jalr __save_r21_r29,r10 */
__save_r21_r29:
+#ifdef __EP__
mov ep,r1
addi -36,sp,sp
mov sp,ep
sst.w r22,28[ep]
sst.w r21,32[ep]
mov r1,ep
+#else
+ addi -36,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+ st.w r24,20[sp]
+ st.w r23,24[sp]
+ st.w r22,28[sp]
+ st.w r21,32[sp]
+#endif
jmp [r10]
.size __save_r21_r29,.-__save_r21_r29
.globl __return_r21_r29
.type __return_r21_r29,@function
__return_r21_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 32[ep],r21
addi 36,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ ld.w 16[sp],r25
+ ld.w 20[sp],r24
+ ld.w 24[sp],r23
+ ld.w 28[sp],r22
+ ld.w 32[sp],r21
+ addi 36,sp,sp
+#endif
jmp [r31]
.size __return_r21_r29,.-__return_r21_r29
#endif /* L_save_21 */
/* Allocate space and save registers 22 .. 29 on the stack */
/* Called via: jalr __save_r22_r29,r10 */
__save_r22_r29:
+#ifdef __EP__
mov ep,r1
addi -32,sp,sp
mov sp,ep
sst.w r23,24[ep]
sst.w r22,28[ep]
mov r1,ep
+#else
+ addi -32,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+ st.w r24,20[sp]
+ st.w r23,24[sp]
+ st.w r22,28[sp]
+#endif
jmp [r10]
.size __save_r22_r29,.-__save_r22_r29
.globl __return_r22_r29
.type __return_r22_r29,@function
__return_r22_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 28[ep],r22
addi 32,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ ld.w 16[sp],r25
+ ld.w 20[sp],r24
+ ld.w 24[sp],r23
+ ld.w 28[sp],r22
+ addi 32,sp,sp
+#endif
jmp [r31]
.size __return_r22_r29,.-__return_r22_r29
#endif /* L_save_22 */
/* Allocate space and save registers 23 .. 29 on the stack */
/* Called via: jalr __save_r23_r29,r10 */
__save_r23_r29:
+#ifdef __EP__
mov ep,r1
addi -28,sp,sp
mov sp,ep
sst.w r24,20[ep]
sst.w r23,24[ep]
mov r1,ep
+#else
+ addi -28,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+ st.w r24,20[sp]
+ st.w r23,24[sp]
+#endif
jmp [r10]
.size __save_r23_r29,.-__save_r23_r29
.globl __return_r23_r29
.type __return_r23_r29,@function
__return_r23_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 24[ep],r23
addi 28,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ ld.w 16[sp],r25
+ ld.w 20[sp],r24
+ ld.w 24[sp],r23
+ addi 28,sp,sp
+#endif
jmp [r31]
.size __return_r23_r29,.-__return_r23_r29
#endif /* L_save_23 */
/* Allocate space and save registers 24 .. 29 on the stack */
/* Called via: jalr __save_r24_r29,r10 */
__save_r24_r29:
+#ifdef __EP__
mov ep,r1
addi -24,sp,sp
mov sp,ep
sst.w r25,16[ep]
sst.w r24,20[ep]
mov r1,ep
+#else
+ addi -24,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+ st.w r24,20[sp]
+#endif
jmp [r10]
.size __save_r24_r29,.-__save_r24_r29
.globl __return_r24_r29
.type __return_r24_r29,@function
__return_r24_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 20[ep],r24
addi 24,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ ld.w 16[sp],r25
+ ld.w 20[sp],r24
+ addi 24,sp,sp
+#endif
jmp [r31]
.size __return_r24_r29,.-__return_r24_r29
#endif /* L_save_24 */
/* Allocate space and save registers 25 .. 29 on the stack */
/* Called via: jalr __save_r25_r29,r10 */
__save_r25_r29:
+#ifdef __EP__
mov ep,r1
addi -20,sp,sp
mov sp,ep
sst.w r26,12[ep]
sst.w r25,16[ep]
mov r1,ep
+#else
+ addi -20,sp,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+ st.w r25,16[sp]
+#endif
jmp [r10]
.size __save_r25_r29,.-__save_r25_r29
.globl __return_r25_r29
.type __return_r25_r29,@function
__return_r25_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 16[ep],r25
addi 20,sp,sp
mov r1,ep
+#else
+ ld.w 0[ep],r29
+ ld.w 4[ep],r28
+ ld.w 8[ep],r27
+ ld.w 12[ep],r26
+ ld.w 16[ep],r25
+ addi 20,sp,sp
+#endif
jmp [r31]
.size __return_r25_r29,.-__return_r25_r29
#endif /* L_save_25 */
/* Allocate space and save registers 26 .. 29 on the stack */
/* Called via: jalr __save_r26_r29,r10 */
__save_r26_r29:
+#ifdef __EP__
mov ep,r1
add -16,sp
mov sp,ep
sst.w r27,8[ep]
sst.w r26,12[ep]
mov r1,ep
+#else
+ add -16,sp
+ st.w r29,0[sp]
+ st.w r28,4[sp]
+ st.w r27,8[sp]
+ st.w r26,12[sp]
+#endif
jmp [r10]
.size __save_r26_r29,.-__save_r26_r29
.globl __return_r26_r29
.type __return_r26_r29,@function
__return_r26_r29:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 0[ep],r29
sld.w 12[ep],r26
addi 16,sp,sp
mov r1,ep
+#else
+ ld.w 0[sp],r29
+ ld.w 4[sp],r28
+ ld.w 8[sp],r27
+ ld.w 12[sp],r26
+ addi 16,sp,sp
+#endif
jmp [r31]
.size __return_r26_r29,.-__return_r26_r29
#endif /* L_save_26 */
.align 2
.globl __save_r2_r31
.type __save_r2_r31,@function
- /* Allocate space and save registers 20 .. 29, 31 on the stack */
- /* Also allocate space for the argument save area */
- /* Called via: jalr __save_r2_r31,r10 */
+ /* Allocate space and save registers 20 .. 29, 31 on the stack. */
+ /* Also allocate space for the argument save area. */
+ /* Called via: jalr __save_r2_r31,r10. */
__save_r2_r31:
+#ifdef __EP__
mov ep,r1
addi -64,sp,sp
mov sp,ep
sst.w r2,56[ep]
sst.w r31,60[ep]
mov r1,ep
+#else
+ addi -64,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r24,36[sp]
+ st.w r23,40[sp]
+ st.w r22,44[sp]
+ st.w r21,48[sp]
+ st.w r20,52[sp]
+ st.w r2,56[sp]
+ st.w r31,60[sp]
+#endif
jmp [r10]
.size __save_r2_r31,.-__save_r2_r31
.globl __return_r2_r31
.type __return_r2_r31,@function
__return_r2_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 60[ep],r31
addi 64,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r24
+ ld.w 40[sp],r23
+ ld.w 44[sp],r22
+ ld.w 48[sp],r21
+ ld.w 52[sp],r20
+ ld.w 56[sp],r2
+ ld.w 60[sp],r31
+ addi 64,sp,sp
+#endif
jmp [r31]
.size __return_r2_r31,.-__return_r2_r31
#endif /* L_save_2c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r20_r31,r10 */
__save_r20_r31:
+#ifdef __EP__
mov ep,r1
addi -60,sp,sp
mov sp,ep
sst.w r20,52[ep]
sst.w r31,56[ep]
mov r1,ep
+#else
+ addi -60,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r24,36[sp]
+ st.w r23,40[sp]
+ st.w r22,44[sp]
+ st.w r21,48[sp]
+ st.w r20,52[sp]
+ st.w r31,56[sp]
+#endif
jmp [r10]
.size __save_r20_r31,.-__save_r20_r31
.globl __return_r20_r31
.type __return_r20_r31,@function
__return_r20_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 56[ep],r31
addi 60,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r24
+ ld.w 40[sp],r23
+ ld.w 44[sp],r22
+ ld.w 48[sp],r21
+ ld.w 52[sp],r20
+ ld.w 56[sp],r31
+ addi 60,sp,sp
+#endif
jmp [r31]
.size __return_r20_r31,.-__return_r20_r31
#endif /* L_save_20c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r21_r31,r10 */
__save_r21_r31:
+#ifdef __EP__
mov ep,r1
addi -56,sp,sp
mov sp,ep
sst.w r21,48[ep]
sst.w r31,52[ep]
mov r1,ep
+#else
+ addi -56,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r24,36[sp]
+ st.w r23,40[sp]
+ st.w r22,44[sp]
+ st.w r21,48[sp]
+ st.w r31,52[sp]
+#endif
jmp [r10]
.size __save_r21_r31,.-__save_r21_r31
.globl __return_r21_r31
.type __return_r21_r31,@function
__return_r21_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 52[ep],r31
addi 56,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r24
+ ld.w 40[sp],r23
+ ld.w 44[sp],r22
+ ld.w 48[sp],r21
+ ld.w 52[sp],r31
+ addi 56,sp,sp
+#endif
jmp [r31]
.size __return_r21_r31,.-__return_r21_r31
#endif /* L_save_21c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r22_r31,r10 */
__save_r22_r31:
+#ifdef __EP__
mov ep,r1
addi -52,sp,sp
mov sp,ep
sst.w r22,44[ep]
sst.w r31,48[ep]
mov r1,ep
+#else
+ addi -52,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r24,36[sp]
+ st.w r23,40[sp]
+ st.w r22,44[sp]
+ st.w r31,48[sp]
+#endif
jmp [r10]
.size __save_r22_r31,.-__save_r22_r31
.globl __return_r22_r31
.type __return_r22_r31,@function
__return_r22_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 48[ep],r31
addi 52,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r24
+ ld.w 40[sp],r23
+ ld.w 44[sp],r22
+ ld.w 48[sp],r31
+ addi 52,sp,sp
+#endif
jmp [r31]
.size __return_r22_r31,.-__return_r22_r31
#endif /* L_save_22c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r23_r31,r10 */
__save_r23_r31:
+#ifdef __EP__
mov ep,r1
addi -48,sp,sp
mov sp,ep
sst.w r23,40[ep]
sst.w r31,44[ep]
mov r1,ep
+#else
+ addi -48,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r24,36[sp]
+ st.w r23,40[sp]
+ st.w r31,44[sp]
+#endif
jmp [r10]
.size __save_r23_r31,.-__save_r23_r31
.globl __return_r23_r31
.type __return_r23_r31,@function
__return_r23_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 44[ep],r31
addi 48,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r24
+ ld.w 40[sp],r23
+ ld.w 44[sp],r31
+ addi 48,sp,sp
+#endif
jmp [r31]
.size __return_r23_r31,.-__return_r23_r31
#endif /* L_save_23c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r24_r31,r10 */
__save_r24_r31:
+#ifdef __EP__
mov ep,r1
addi -44,sp,sp
mov sp,ep
sst.w r24,36[ep]
sst.w r31,40[ep]
mov r1,ep
+#else
+ addi -44,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r24,36[sp]
+ st.w r31,40[sp]
+#endif
jmp [r10]
.size __save_r24_r31,.-__save_r24_r31
.globl __return_r24_r31
.type __return_r24_r31,@function
__return_r24_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 40[ep],r31
addi 44,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r24
+ ld.w 40[sp],r31
+ addi 44,sp,sp
+#endif
jmp [r31]
.size __return_r24_r31,.-__return_r24_r31
#endif /* L_save_24c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r25_r31,r10 */
__save_r25_r31:
+#ifdef __EP__
mov ep,r1
addi -40,sp,sp
mov sp,ep
sst.w r25,32[ep]
sst.w r31,36[ep]
mov r1,ep
+#else
+ addi -40,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r25,32[sp]
+ st.w r31,36[sp]
+#endif
jmp [r10]
.size __save_r25_r31,.-__save_r25_r31
.globl __return_r25_r31
.type __return_r25_r31,@function
__return_r25_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 36[ep],r31
addi 40,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r25
+ ld.w 36[sp],r31
+ addi 40,sp,sp
+#endif
jmp [r31]
.size __return_r25_r31,.-__return_r25_r31
#endif /* L_save_25c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r26_r31,r10 */
__save_r26_r31:
+#ifdef __EP__
mov ep,r1
addi -36,sp,sp
mov sp,ep
sst.w r26,28[ep]
sst.w r31,32[ep]
mov r1,ep
+#else
+ addi -36,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r26,28[sp]
+ st.w r31,32[sp]
+#endif
jmp [r10]
.size __save_r26_r31,.-__save_r26_r31
.globl __return_r26_r31
.type __return_r26_r31,@function
__return_r26_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 32[ep],r31
addi 36,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r26
+ ld.w 32[sp],r31
+ addi 36,sp,sp
+#endif
jmp [r31]
.size __return_r26_r31,.-__return_r26_r31
#endif /* L_save_26c */
/* Also allocate space for the argument save area */
/* Called via: jalr __save_r27_r31,r10 */
__save_r27_r31:
+#ifdef __EP__
mov ep,r1
addi -32,sp,sp
mov sp,ep
sst.w r27,24[ep]
sst.w r31,28[ep]
mov r1,ep
+#else
+ addi -32,sp,sp
+ st.w r29,16[sp]
+ st.w r28,20[sp]
+ st.w r27,24[sp]
+ st.w r31,28[sp]
+#endif
jmp [r10]
.size __save_r27_r31,.-__save_r27_r31
.globl __return_r27_r31
.type __return_r27_r31,@function
__return_r27_r31:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 16[ep],r29
sld.w 28[ep],r31
addi 32,sp,sp
mov r1,ep
+#else
+ ld.w 16[sp],r29
+ ld.w 20[sp],r28
+ ld.w 24[sp],r27
+ ld.w 28[sp],r31
+ addi 32,sp,sp
+#endif
jmp [r31]
.size __return_r27_r31,.-__return_r27_r31
#endif /* L_save_27c */
/* Save registers 6 .. 9 on the stack for variable argument functions. */
/* Called via: jalr __save_r6_r9,r10 */
__save_r6_r9:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sst.w r6,0[ep]
sst.w r8,8[ep]
sst.w r9,12[ep]
mov r1,ep
+#else
+ st.w r6,0[sp]
+ st.w r7,4[sp]
+ st.w r8,8[sp]
+ st.w r9,12[sp]
+#endif
jmp [r10]
.size __save_r6_r9,.-__save_r6_r9
#endif /* L_save_varargs */
/* Called via: jalr __save_all_interrupt,r10 */
__save_all_interrupt:
addi -120,sp,sp
+#ifdef __EP__
mov ep,r1
mov sp,ep
sst.w r31,116[ep]
sst.w r28,20[ep]
sst.w r29,16[ep]
mov r1,ep
+#else
+ st.w r31,116[sp]
+ st.w r2,112[sp]
+ st.w gp,108[sp]
+ st.w r6,104[sp]
+ st.w r7,100[sp]
+ st.w r8,96[sp]
+ st.w r9,92[sp]
+ st.w r11,88[sp]
+ st.w r12,84[sp]
+ st.w r13,80[sp]
+ st.w r14,76[sp]
+ st.w r15,72[sp]
+ st.w r16,68[sp]
+ st.w r17,64[sp]
+ st.w r18,60[sp]
+ st.w r19,56[sp]
+ st.w r20,52[sp]
+ st.w r21,48[sp]
+ st.w r22,44[sp]
+ st.w r23,40[sp]
+ st.w r24,36[sp]
+ st.w r25,32[sp]
+ st.w r26,28[sp]
+ st.w r27,24[sp]
+ st.w r28,20[sp]
+ st.w r29,16[sp]
+#endif
jmp [r10]
.size __save_all_interrupt,.-__save_all_interrupt
deallocate the stack space. */
/* Called via: jalr __restore_all_interrupt,r10 */
__restore_all_interrupt:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sld.w 116[ep],r31
sld.w 20[ep],r28
sld.w 16[ep],r29
mov r1,ep
- addi 120,sp,sp
+#else
+ ld.w 116[sp],r31
+ ld.w 112[sp],r2
+ ld.w 108[sp],gp
+ ld.w 104[sp],r6
+ ld.w 100[sp],r7
+ ld.w 96[sp],r8
+ ld.w 92[sp],r9
+ ld.w 88[sp],r11
+ ld.w 84[sp],r12
+ ld.w 80[sp],r13
+ ld.w 76[sp],r14
+ ld.w 72[sp],r15
+ ld.w 68[sp],r16
+ ld.w 64[sp],r17
+ ld.w 60[sp],r18
+ ld.w 56[sp],r19
+ ld.w 52[sp],r20
+ ld.w 48[sp],r21
+ ld.w 44[sp],r22
+ ld.w 40[sp],r23
+ ld.w 36[sp],r24
+ ld.w 32[sp],r25
+ ld.w 28[sp],r26
+ ld.w 24[sp],r27
+ ld.w 20[sp],r28
+ ld.w 16[sp],r29
+#endif
+ addi 120,sp,sp
jmp [r10]
.size __restore_all_interrupt,.-__restore_all_interrupt
#endif /* L_save_all_interrupt */
Called via: callt ctoff(__callt_save_r6_r9). */
.align 2
.L_save_r6_r9:
+#ifdef __EP__
mov ep,r1
mov sp,ep
sst.w r6,0[ep]
sst.w r8,8[ep]
sst.w r9,12[ep]
mov r1,ep
+#else
+ st.w r6,0[sp]
+ st.w r7,4[sp]
+ st.w r8,8[sp]
+ st.w r9,12[sp]
+#endif
ctret
/* Place the offsets of the start of this routines into the call table. */
.align 2
.L_save_all_interrupt:
addi -60, sp, sp
+#ifdef __EP__
mov ep, r1
mov sp, ep
sst.w r2, 56[ep]
sst.w r18, 4[ep]
sst.w r19, 0[ep]
mov r1, ep
-
+#else
+ st.w r2, 56[sp]
+ st.w r5, 52[sp]
+ st.w r6, 48[sp]
+ st.w r7, 44[sp]
+ st.w r8, 40[sp]
+ st.w r9, 36[sp]
+ st.w r11, 32[sp]
+ st.w r12, 28[sp]
+ st.w r13, 24[sp]
+ st.w r14, 20[sp]
+ st.w r15, 16[sp]
+ st.w r16, 12[sp]
+ st.w r17, 8[sp]
+ st.w r18, 4[sp]
+ st.w r19, 0[sp]
+#endif
prepare {r20 - r29, r31}, 4
ctret
.align 2
.L_restore_all_interrupt:
dispose 4, {r20 - r29, r31}
-
+#ifdef __EP__
mov ep, r1
mov sp, ep
sld.w 0 [ep], r19
sld.w 52[ep], r5
sld.w 56[ep], r2
mov r1, ep
+#else
+ ld.w 0 [sp], r19
+ ld.w 4 [sp], r18
+ ld.w 8 [sp], r17
+ ld.w 12[sp], r16
+ ld.w 16[sp], r15
+ ld.w 20[sp], r14
+ ld.w 24[sp], r13
+ ld.w 28[sp], r12
+ ld.w 32[sp], r11
+ ld.w 36[sp], r9
+ ld.w 40[sp], r8
+ ld.w 44[sp], r7
+ ld.w 48[sp], r6
+ ld.w 52[sp], r5
+ ld.w 56[sp], r2
+#endif
addi 60, sp, sp
ctret
return \"jarl __save_all_interrupt,r10\";
output_asm_insn (\"addi -120, sp, sp\", operands);
- output_asm_insn (\"mov ep, r1\", operands);
- output_asm_insn (\"mov sp, ep\", operands);
- output_asm_insn (\"sst.w r31, 116[ep]\", operands);
- output_asm_insn (\"sst.w r2, 112[ep]\", operands);
- output_asm_insn (\"sst.w gp, 108[ep]\", operands);
- output_asm_insn (\"sst.w r6, 104[ep]\", operands);
- output_asm_insn (\"sst.w r7, 100[ep]\", operands);
- output_asm_insn (\"sst.w r8, 96[ep]\", operands);
- output_asm_insn (\"sst.w r9, 92[ep]\", operands);
- output_asm_insn (\"sst.w r11, 88[ep]\", operands);
- output_asm_insn (\"sst.w r12, 84[ep]\", operands);
- output_asm_insn (\"sst.w r13, 80[ep]\", operands);
- output_asm_insn (\"sst.w r14, 76[ep]\", operands);
- output_asm_insn (\"sst.w r15, 72[ep]\", operands);
- output_asm_insn (\"sst.w r16, 68[ep]\", operands);
- output_asm_insn (\"sst.w r17, 64[ep]\", operands);
- output_asm_insn (\"sst.w r18, 60[ep]\", operands);
- output_asm_insn (\"sst.w r19, 56[ep]\", operands);
- output_asm_insn (\"sst.w r20, 52[ep]\", operands);
- output_asm_insn (\"sst.w r21, 48[ep]\", operands);
- output_asm_insn (\"sst.w r22, 44[ep]\", operands);
- output_asm_insn (\"sst.w r23, 40[ep]\", operands);
- output_asm_insn (\"sst.w r24, 36[ep]\", operands);
- output_asm_insn (\"sst.w r25, 32[ep]\", operands);
- output_asm_insn (\"sst.w r26, 28[ep]\", operands);
- output_asm_insn (\"sst.w r27, 24[ep]\", operands);
- output_asm_insn (\"sst.w r28, 20[ep]\", operands);
- output_asm_insn (\"sst.w r29, 16[ep]\", operands);
- output_asm_insn (\"mov r1, ep\", operands);
+
+ if (TARGET_EP)
+ {
+ output_asm_insn (\"mov ep, r1\", operands);
+ output_asm_insn (\"mov sp, ep\", operands);
+ output_asm_insn (\"sst.w r31, 116[ep]\", operands);
+ output_asm_insn (\"sst.w r2, 112[ep]\", operands);
+ output_asm_insn (\"sst.w gp, 108[ep]\", operands);
+ output_asm_insn (\"sst.w r6, 104[ep]\", operands);
+ output_asm_insn (\"sst.w r7, 100[ep]\", operands);
+ output_asm_insn (\"sst.w r8, 96[ep]\", operands);
+ output_asm_insn (\"sst.w r9, 92[ep]\", operands);
+ output_asm_insn (\"sst.w r11, 88[ep]\", operands);
+ output_asm_insn (\"sst.w r12, 84[ep]\", operands);
+ output_asm_insn (\"sst.w r13, 80[ep]\", operands);
+ output_asm_insn (\"sst.w r14, 76[ep]\", operands);
+ output_asm_insn (\"sst.w r15, 72[ep]\", operands);
+ output_asm_insn (\"sst.w r16, 68[ep]\", operands);
+ output_asm_insn (\"sst.w r17, 64[ep]\", operands);
+ output_asm_insn (\"sst.w r18, 60[ep]\", operands);
+ output_asm_insn (\"sst.w r19, 56[ep]\", operands);
+ output_asm_insn (\"sst.w r20, 52[ep]\", operands);
+ output_asm_insn (\"sst.w r21, 48[ep]\", operands);
+ output_asm_insn (\"sst.w r22, 44[ep]\", operands);
+ output_asm_insn (\"sst.w r23, 40[ep]\", operands);
+ output_asm_insn (\"sst.w r24, 36[ep]\", operands);
+ output_asm_insn (\"sst.w r25, 32[ep]\", operands);
+ output_asm_insn (\"sst.w r26, 28[ep]\", operands);
+ output_asm_insn (\"sst.w r27, 24[ep]\", operands);
+ output_asm_insn (\"sst.w r28, 20[ep]\", operands);
+ output_asm_insn (\"sst.w r29, 16[ep]\", operands);
+ output_asm_insn (\"mov r1, ep\", operands);
+ }
+ else
+ {
+ output_asm_insn (\"st.w r31, 116[sp]\", operands);
+ output_asm_insn (\"st.w r2, 112[sp]\", operands);
+ output_asm_insn (\"st.w gp, 108[sp]\", operands);
+ output_asm_insn (\"st.w r6, 104[sp]\", operands);
+ output_asm_insn (\"st.w r7, 100[sp]\", operands);
+ output_asm_insn (\"st.w r8, 96[sp]\", operands);
+ output_asm_insn (\"st.w r9, 92[sp]\", operands);
+ output_asm_insn (\"st.w r11, 88[sp]\", operands);
+ output_asm_insn (\"st.w r12, 84[sp]\", operands);
+ output_asm_insn (\"st.w r13, 80[sp]\", operands);
+ output_asm_insn (\"st.w r14, 76[sp]\", operands);
+ output_asm_insn (\"st.w r15, 72[sp]\", operands);
+ output_asm_insn (\"st.w r16, 68[sp]\", operands);
+ output_asm_insn (\"st.w r17, 64[sp]\", operands);
+ output_asm_insn (\"st.w r18, 60[sp]\", operands);
+ output_asm_insn (\"st.w r19, 56[sp]\", operands);
+ output_asm_insn (\"st.w r20, 52[sp]\", operands);
+ output_asm_insn (\"st.w r21, 48[sp]\", operands);
+ output_asm_insn (\"st.w r22, 44[sp]\", operands);
+ output_asm_insn (\"st.w r23, 40[sp]\", operands);
+ output_asm_insn (\"st.w r24, 36[sp]\", operands);
+ output_asm_insn (\"st.w r25, 32[sp]\", operands);
+ output_asm_insn (\"st.w r26, 28[sp]\", operands);
+ output_asm_insn (\"st.w r27, 24[sp]\", operands);
+ output_asm_insn (\"st.w r28, 20[sp]\", operands);
+ output_asm_insn (\"st.w r29, 16[sp]\", operands);
+ }
+
return \"\";
}"
[(set (attr "length")
{
if (TARGET_PROLOG_FUNCTION && !TARGET_LONG_CALLS)
return \"jarl __restore_all_interrupt,r10\";
- else
+
+ if (TARGET_EP)
{
output_asm_insn (\"mov ep, r1\", operands);
output_asm_insn (\"mov sp, ep\", operands);
output_asm_insn (\"sld.w 20[ep], r28\", operands);
output_asm_insn (\"sld.w 16[ep], r29\", operands);
output_asm_insn (\"mov r1, ep\", operands);
- output_asm_insn (\"addi 120, sp, sp\", operands);
- return \"\";
}
+ else
+ {
+ output_asm_insn (\"ld.w 116[sp], r31\", operands);
+ output_asm_insn (\"ld.w 112[sp], r2\", operands);
+ output_asm_insn (\"ld.w 108[sp], gp\", operands);
+ output_asm_insn (\"ld.w 104[sp], r6\", operands);
+ output_asm_insn (\"ld.w 100[sp], r7\", operands);
+ output_asm_insn (\"ld.w 96[sp], r8\", operands);
+ output_asm_insn (\"ld.w 92[sp], r9\", operands);
+ output_asm_insn (\"ld.w 88[sp], r11\", operands);
+ output_asm_insn (\"ld.w 84[sp], r12\", operands);
+ output_asm_insn (\"ld.w 80[sp], r13\", operands);
+ output_asm_insn (\"ld.w 76[sp], r14\", operands);
+ output_asm_insn (\"ld.w 72[sp], r15\", operands);
+ output_asm_insn (\"ld.w 68[sp], r16\", operands);
+ output_asm_insn (\"ld.w 64[sp], r17\", operands);
+ output_asm_insn (\"ld.w 60[sp], r18\", operands);
+ output_asm_insn (\"ld.w 56[sp], r19\", operands);
+ output_asm_insn (\"ld.w 52[sp], r20\", operands);
+ output_asm_insn (\"ld.w 48[sp], r21\", operands);
+ output_asm_insn (\"ld.w 44[sp], r22\", operands);
+ output_asm_insn (\"ld.w 40[sp], r23\", operands);
+ output_asm_insn (\"ld.w 36[sp], r24\", operands);
+ output_asm_insn (\"ld.w 32[sp], r25\", operands);
+ output_asm_insn (\"ld.w 28[sp], r26\", operands);
+ output_asm_insn (\"ld.w 24[sp], r27\", operands);
+ output_asm_insn (\"ld.w 20[sp], r28\", operands);
+ output_asm_insn (\"ld.w 16[sp], r29\", operands);
+ }
+ output_asm_insn (\"addi 120, sp, sp\", operands);
+ return \"\";
}"
[(set (attr "length")
(if_then_else (ne (symbol_ref "TARGET_LONG_CALLS") (const_int 0))