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

+ Recent posts