📄 lib1funcs.asm
字号:
#endif 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:#ifdef __EP__ 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#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 /* 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:#ifdef __EP__ 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#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 */#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:#ifdef __EP__ 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#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 /* 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:#ifdef __EP__ 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#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 */#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:#ifdef __EP__ 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#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 /* 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:#ifdef __EP__ 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#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 */#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:#ifdef __EP__ 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#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 /* 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:#ifdef __EP__ 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#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 */#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:#ifdef __EP__ 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#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 /* 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:#ifdef __EP__ 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#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 */#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:#ifdef __EP__ 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#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 */#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#ifdef __EP__ 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#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 .globl __restore_all_interrupt .type __restore_all_interrupt,@function /* Restore all registers saved in __save_all_interrupt and 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 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#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -