📄 lib1funcs.asm
字号:
/* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r27_r29 */ .align 2 .globl __return_r27_r29 .type __return_r27_r29,@function__return_r27_r29: ld.w 0[sp],r29 ld.w 4[sp],r28 ld.w 8[sp],r27 add 12,sp jmp [r31] .size __return_r27_r29,.-__return_r27_r29#endif /* L_save_27 */#ifdef L_save_28 .text .align 2 .globl __save_r28_r29 .type __save_r28_r29,@function /* Allocate space and save registers 28,29 on the stack */ /* Called via: jalr __save_r28_r29,r10 */__save_r28_r29: add -8,sp st.w r29,0[sp] st.w r28,4[sp] jmp [r10] .size __save_r28_r29,.-__save_r28_r29 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r28_r29 */ .align 2 .globl __return_r28_r29 .type __return_r28_r29,@function__return_r28_r29: ld.w 0[sp],r29 ld.w 4[sp],r28 add 8,sp jmp [r31] .size __return_r28_r29,.-__return_r28_r29#endif /* L_save_28 */#ifdef L_save_29 .text .align 2 .globl __save_r29 .type __save_r29,@function /* Allocate space and save register 29 on the stack */ /* Called via: jalr __save_r29,r10 */__save_r29: add -4,sp st.w r29,0[sp] jmp [r10] .size __save_r29,.-__save_r29 /* Restore saved register 29, deallocate stack and return to the user */ /* Called via: jr __return_r29 */ .align 2 .globl __return_r29 .type __return_r29,@function__return_r29: ld.w 0[sp],r29 add 4,sp jmp [r31] .size __return_r29,.-__return_r29#endif /* L_save_28 */#ifdef L_save_2c .text .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 */__save_r2_r31: mov ep,r1 addi -64,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r24,36[ep] sst.w r23,40[ep] sst.w r22,44[ep] sst.w r21,48[ep] sst.w r20,52[ep] sst.w r2,56[ep] sst.w r31,60[ep] mov r1,ep jmp [r10] .size __save_r2_r31,.-__save_r2_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r20_r31 */ .align 2 .globl __return_r2_r31 .type __return_r2_r31,@function__return_r2_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r24 sld.w 40[ep],r23 sld.w 44[ep],r22 sld.w 48[ep],r21 sld.w 52[ep],r20 sld.w 56[ep],r2 sld.w 60[ep],r31 addi 64,sp,sp mov r1,ep jmp [r31] .size __return_r2_r31,.-__return_r2_r31#endif /* L_save_2c */#ifdef L_save_20c .text .align 2 .globl __save_r20_r31 .type __save_r20_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_r20_r31,r10 */__save_r20_r31: mov ep,r1 addi -60,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r24,36[ep] sst.w r23,40[ep] sst.w r22,44[ep] sst.w r21,48[ep] sst.w r20,52[ep] sst.w r31,56[ep] mov r1,ep jmp [r10] .size __save_r20_r31,.-__save_r20_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r20_r31 */ .align 2 .globl __return_r20_r31 .type __return_r20_r31,@function__return_r20_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r24 sld.w 40[ep],r23 sld.w 44[ep],r22 sld.w 48[ep],r21 sld.w 52[ep],r20 sld.w 56[ep],r31 addi 60,sp,sp mov r1,ep jmp [r31] .size __return_r20_r31,.-__return_r20_r31#endif /* L_save_20c */#ifdef L_save_21c .text .align 2 .globl __save_r21_r31 .type __save_r21_r31,@function /* Allocate space and save registers 21 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r21_r31,r10 */__save_r21_r31: mov ep,r1 addi -56,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r24,36[ep] sst.w r23,40[ep] sst.w r22,44[ep] sst.w r21,48[ep] sst.w r31,52[ep] mov r1,ep jmp [r10] .size __save_r21_r31,.-__save_r21_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r21_r31 */ .align 2 .globl __return_r21_r31 .type __return_r21_r31,@function__return_r21_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r24 sld.w 40[ep],r23 sld.w 44[ep],r22 sld.w 48[ep],r21 sld.w 52[ep],r31 addi 56,sp,sp mov r1,ep jmp [r31] .size __return_r21_r31,.-__return_r21_r31#endif /* L_save_21c */#ifdef L_save_22c .text .align 2 .globl __save_r22_r31 .type __save_r22_r31,@function /* Allocate space and save registers 22 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r22_r31,r10 */__save_r22_r31: mov ep,r1 addi -52,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r24,36[ep] sst.w r23,40[ep] sst.w r22,44[ep] sst.w r31,48[ep] mov r1,ep jmp [r10] .size __save_r22_r31,.-__save_r22_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r22_r31 */ .align 2 .globl __return_r22_r31 .type __return_r22_r31,@function__return_r22_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r24 sld.w 40[ep],r23 sld.w 44[ep],r22 sld.w 48[ep],r31 addi 52,sp,sp mov r1,ep jmp [r31] .size __return_r22_r31,.-__return_r22_r31#endif /* L_save_22c */#ifdef L_save_23c .text .align 2 .globl __save_r23_r31 .type __save_r23_r31,@function /* Allocate space and save registers 23 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r23_r31,r10 */__save_r23_r31: mov ep,r1 addi -48,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r24,36[ep] sst.w r23,40[ep] sst.w r31,44[ep] mov r1,ep jmp [r10] .size __save_r23_r31,.-__save_r23_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r23_r31 */ .align 2 .globl __return_r23_r31 .type __return_r23_r31,@function__return_r23_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r24 sld.w 40[ep],r23 sld.w 44[ep],r31 addi 48,sp,sp mov r1,ep jmp [r31] .size __return_r23_r31,.-__return_r23_r31#endif /* L_save_23c */#ifdef L_save_24c .text .align 2 .globl __save_r24_r31 .type __save_r24_r31,@function /* Allocate space and save registers 24 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r24_r31,r10 */__save_r24_r31: mov ep,r1 addi -44,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r24,36[ep] sst.w r31,40[ep] mov r1,ep jmp [r10] .size __save_r24_r31,.-__save_r24_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r24_r31 */ .align 2 .globl __return_r24_r31 .type __return_r24_r31,@function__return_r24_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r24 sld.w 40[ep],r31 addi 44,sp,sp mov r1,ep jmp [r31] .size __return_r24_r31,.-__return_r24_r31#endif /* L_save_24c */#ifdef L_save_25c .text .align 2 .globl __save_r25_r31 .type __save_r25_r31,@function /* Allocate space and save registers 25 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r25_r31,r10 */__save_r25_r31: mov ep,r1 addi -40,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r25,32[ep] sst.w r31,36[ep] mov r1,ep jmp [r10] .size __save_r25_r31,.-__save_r25_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r25_r31 */ .align 2 .globl __return_r25_r31 .type __return_r25_r31,@function__return_r25_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r25 sld.w 36[ep],r31 addi 40,sp,sp mov r1,ep jmp [r31] .size __return_r25_r31,.-__return_r25_r31#endif /* L_save_25c */#ifdef L_save_26c .text .align 2 .globl __save_r26_r31 .type __save_r26_r31,@function /* Allocate space and save registers 26 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r26_r31,r10 */__save_r26_r31: mov ep,r1 addi -36,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r26,28[ep] sst.w r31,32[ep] mov r1,ep jmp [r10] .size __save_r26_r31,.-__save_r26_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r26_r31 */ .align 2 .globl __return_r26_r31 .type __return_r26_r31,@function__return_r26_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r26 sld.w 32[ep],r31 addi 36,sp,sp mov r1,ep jmp [r31] .size __return_r26_r31,.-__return_r26_r31#endif /* L_save_26c */#ifdef L_save_27c .text .align 2 .globl __save_r27_r31 .type __save_r27_r31,@function /* Allocate space and save registers 27 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r27_r31,r10 */__save_r27_r31: mov ep,r1 addi -32,sp,sp mov sp,ep sst.w r29,16[ep] sst.w r28,20[ep] sst.w r27,24[ep] sst.w r31,28[ep] mov r1,ep jmp [r10] .size __save_r27_r31,.-__save_r27_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r27_r31 */ .align 2 .globl __return_r27_r31 .type __return_r27_r31,@function__return_r27_r31: mov ep,r1 mov sp,ep sld.w 16[ep],r29 sld.w 20[ep],r28 sld.w 24[ep],r27 sld.w 28[ep],r31 addi 32,sp,sp mov r1,ep jmp [r31] .size __return_r27_r31,.-__return_r27_r31#endif /* L_save_27c */#ifdef L_save_28c .text .align 2 .globl __save_r28_r31 .type __save_r28_r31,@function /* Allocate space and save registers 28 .. 29, 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r28_r31,r10 */__save_r28_r31: addi -28,sp,sp st.w r29,16[sp] st.w r28,20[sp] st.w r31,24[sp] jmp [r10] .size __save_r28_r31,.-__save_r28_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r28_r31 */ .align 2 .globl __return_r28_r31 .type __return_r28_r31,@function__return_r28_r31: ld.w 16[sp],r29 ld.w 20[sp],r28 ld.w 24[sp],r31 addi 28,sp,sp jmp [r31] .size __return_r28_r31,.-__return_r28_r31#endif /* L_save_28c */#ifdef L_save_29c .text .align 2 .globl __save_r29_r31 .type __save_r29_r31,@function /* Allocate space and save registers 29 & 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r29_r31,r10 */__save_r29_r31: addi -24,sp,sp st.w r29,16[sp] st.w r31,20[sp] jmp [r10] .size __save_r29_r31,.-__save_r29_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r29_r31 */ .align 2 .globl __return_r29_r31 .type __return_r29_r31,@function__return_r29_r31: ld.w 16[sp],r29 ld.w 20[sp],r31 addi 24,sp,sp jmp [r31] .size __return_r29_r31,.-__return_r29_r31#endif /* L_save_29c */#ifdef L_save_31c .text .align 2 .globl __save_r31 .type __save_r31,@function /* Allocate space and save register 31 on the stack */ /* Also allocate space for the argument save area */ /* Called via: jalr __save_r31,r10 */__save_r31: addi -20,sp,sp st.w r31,16[sp] jmp [r10] .size __save_r31,.-__save_r31 /* Restore saved registers, deallocate stack and return to the user */ /* Called via: jr __return_r31 */ .align 2 .globl __return_r31 .type __return_r31,@function__return_r31: ld.w 16[sp],r31 addi 20,sp,sp jmp [r31] .size __return_r31,.-__return_r31#endif /* L_save_31c */#ifdef L_save_varargs .text .align 2 .globl __save_r6_r9 .type __save_r6_r9,@function /* Save registers 6 .. 9 on the stack for variable argument functions */ /* Called via: jalr __save_r6_r9,r10 */__save_r6_r9: mov ep,r1 mov sp,ep sst.w r6,0[ep] sst.w r7,4[ep] sst.w r8,8[ep] sst.w r9,12[ep] mov r1,ep jmp [r10] .size __save_r6_r9,.-__save_r6_r9#endif /* L_save_varargs */#ifdef L_save_interrupt .text .align 2 .globl __save_interrupt .type __save_interrupt,@function /* Save registers r1, r4 on stack and load up with expected values */ /* Note, 12 bytes of stack have already been allocated. */ /* Called via: jalr __save_interrupt,r10 */__save_interrupt: st.w ep,0[sp] st.w gp,4[sp] st.w r1,8[sp] movhi hi(__ep),r0,ep movea lo(__ep),ep,ep movhi hi(__gp),r0,gp movea lo(__gp),gp,gp jmp [r10] .size __save_interrupt,.-__save_interrupt /* Restore saved registers, deallocate stack and return from the interrupt */ /* Called via: jr __return_interrupt */ .align 2 .globl __return_interrupt .type __return_interrupt,@function__return_interrupt: ld.w 0[sp],ep ld.w 4[sp],gp ld.w 8[sp],r1 ld.w 12[sp],r10 addi 16,sp,sp reti .size __return_interrupt,.-__return_interrupt#endif /* L_save_interrupt */#ifdef L_save_all_interrupt .text .align 2 .globl __save_all_interrupt .type __save_all_interrupt,@function /* Save all registers except for those saved in __save_interrupt */ /* allocate enough stack for all of the registers & 16 bytes of space */ /* Called via: jalr __save_all_interrupt,r10 */__save_all_interrupt: addi -120,sp,sp mov ep,r1 mov sp,ep
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -