Code walkthrough
MP:FFFFFFFF800030B8|ret_from_exception: c.ldsp x8,0x100(x2) ; x8,256(x2)
MP:FFFFFFFF800030BA| csrci sstatus,0x2 ; sstatus,2
MP:FFFFFFFF800030BE| andi x8,x8,0x100 ; x8,x8,256
MP:FFFFFFFF800030C2| c.bnez x8,0xFFFFFFFF800030D8 ; x8,restore_all
MP:FFFFFFFF800030C4|resume_userspace: ld x8,0x0(x4) ; x8,0(x4)
MP:FFFFFFFF800030C8| andi x9,x8,0x60E ; x9,x8,1550
MP:FFFFFFFF800030CC| c.bnez x9,0xFFFFFFFF8000312A ; x9,work_pending
MP:FFFFFFFF800030CE| c.addi4spn x8,0x120 ; x8,288
MP:FFFFFFFF800030D0| sd x8,0x10(x4) ; x8,16(x4)
MP:FFFFFFFF800030D4| csrw sscratch,x4
MP:FFFFFFFF800030D8|restore_all: c.ldsp x10,0x100(x2) ; x10,256(x2)
MP:FFFFFFFF800030DA| c.ldsp x12,0x0(x2) ; x12,0(x2)
MP:FFFFFFFF800030DC| sc.d x0,x12,(x2)
MP:FFFFFFFF800030E0| csrw sstatus,x10
MP:FFFFFFFF800030E4| csrw sepc,x12
MP:FFFFFFFF800030E8| c.ldsp x1,0x8(x2) ; x1,8(x2)
MP:FFFFFFFF800030EA| c.ldsp x3,0x18(x2) ; x3,24(x2)
MP:FFFFFFFF800030EC| c.ldsp x4,0x20(x2) ; x4,32(x2)
MP:FFFFFFFF800030EE| c.ldsp x5,0x28(x2) ; x5,40(x2)
MP:FFFFFFFF800030F0| c.ldsp x6,0x30(x2) ; x6,48(x2)
MP:FFFFFFFF800030F2| c.ldsp x7,0x38(x2) ; x7,56(x2)
MP:FFFFFFFF800030F4| c.ldsp x8,0x40(x2) ; x8,64(x2)
...
MP:FFFFFFFF80003122| c.ldsp x31,0xF8(x2) ; x31,248(x2)
MP:FFFFFFFF80003124| c.ldsp x2,0x10(x2) ; x2,16(x2)
MP:FFFFFFFF80003126| sret
'RISC-V' 카테고리의 다른 글
RISC-V IPI Call: Code walkthrough (0) | 2024.05.28 |
---|---|
Useful material for RISC-V (0) | 2024.05.28 |
[RISC-V]: Interrupt handling - code walkthrough (0) | 2024.01.29 |
[RISC-V]: Interrupt handling workflow in Linux kernel (0) | 2024.01.29 |