1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include "compiler.h"
- #include "sections.h"
- #include "picorv32.h"
- #include "ioregs.h"
- // Debug functions to read and write x-registers from interrupt
- // mode by register number
- .pushsection ".text.hot.rdxreg","ax"
- .globl rdxreg
- .balign 4
- rdxreg:
- la a3,_xreg_smc
- lw a2,8(a3) // addqxi a0,zero,0
- andi a0,a0,31
- slli a0,a0,15 // rs1
- or a2,a2,a0
- sw a2,(a3)
- jr a3
- .type rdxreg, @function
- .size rdxreg, . - rdxreg
- .popsection
- .pushsection ".text.hot.wrxreg","ax"
- .globl wrxreg
- .balign 4
- wrxreg:
- la a3,_xreg_smc
- lw a2,12(a3) // addxqi zero,a1,0
- andi a0,a0,31
- slli a0,a0,7 // rd
- or a2,a2,a0
- sw a2,(a3)
- jr a3
- .type wrxreg, @function
- .size wrxreg, . - wrxreg
- .popsection
- __rwtext
- .balign 4
- .option norvc
- _xreg_smc:
- nop
- ret
- addqxi a0,zero,0
- addxqi zero,a1,0
- .type _xreg_smc, @function
- .size _xreg_smc, . - _xreg_smc
|