📄 lib1funcs.asm
字号:
.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_r29_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_r29_r31,.-__return_r29_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 sst.w r31,116[ep] sst.w r2,112[ep] sst.w gp,108[ep] sst.w r6,104[ep] sst.w r7,100[ep] sst.w r8,96[ep] sst.w r9,92[ep] sst.w r11,88[ep] sst.w r12,84[ep] sst.w r13,80[ep] sst.w r14,76[ep] sst.w r15,72[ep] sst.w r16,68[ep] sst.w r17,64[ep] sst.w r18,60[ep] sst.w r19,56[ep] sst.w r20,52[ep] sst.w r21,48[ep] sst.w r22,44[ep] sst.w r23,40[ep] sst.w r24,36[ep] sst.w r25,32[ep] sst.w r26,28[ep] sst.w r27,24[ep] sst.w r28,20[ep] sst.w r29,16[ep] mov r1,ep jmp [r10] .size __save_all_interrupt,.-__save_all_interrupt .globl __restore_all_interrupt .type __restore_all_interrupt,@function /* Restore all registers saved in __save_all_interrupt */ /* & deallocate the stack space */ /* Called via: jalr __restore_all_interrupt,r10 */__restore_all_interrupt: mov ep,r1 mov sp,ep sld.w 116[ep],r31 sld.w 112[ep],r2 sld.w 108[ep],gp sld.w 104[ep],r6 sld.w 100[ep],r7 sld.w 96[ep],r8 sld.w 92[ep],r9 sld.w 88[ep],r11 sld.w 84[ep],r12 sld.w 80[ep],r13 sld.w 76[ep],r14 sld.w 72[ep],r15 sld.w 68[ep],r16 sld.w 64[ep],r17 sld.w 60[ep],r18 sld.w 56[ep],r19 sld.w 52[ep],r20 sld.w 48[ep],r21 sld.w 44[ep],r22 sld.w 40[ep],r23 sld.w 36[ep],r24 sld.w 32[ep],r25 sld.w 28[ep],r26 sld.w 24[ep],r27 sld.w 20[ep],r28 sld.w 16[ep],r29 mov r1,ep addi 120,sp,sp jmp [r10] .size __restore_all_interrupt,.-__restore_all_interrupt#endif /* L_save_all_interrupt */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -