Skip to content

Commit 2b24b2a

Browse files
committed
remove zero register from gpr array
1 parent 244501d commit 2b24b2a

2 files changed

Lines changed: 9 additions & 10 deletions

File tree

include/trap/trap.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,8 @@ typedef enum trap_exception_type {
5555
typedef struct trap_frame {
5656
union {
5757
/** @brief General-purpose registers */
58-
reg_t gpr[32];
58+
reg_t gpr[31];
5959
struct {
60-
reg_t zero;
6160
reg_t ra;
6261
reg_t sp;
6362
reg_t gp;

src/lib/trap/trap.S

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ save_regs:
4242
csrrw t0, sscratch, zero
4343

4444
// Save everything, but sp (x2)
45-
.irp i, 0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
46-
sd x\i, \i*8(sp)
45+
.irp i, 1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
46+
sd x\i, (\i - 1)*8(sp)
4747
.endr
4848

4949
csrr t0, sepc
5050
csrr t1, sstatus
5151

52-
sd t0, 32*8(sp)
53-
sd t1, 33*8(sp)
52+
sd t0, 31*8(sp)
53+
sd t1, 32*8(sp)
5454

5555
andi t1, t1, SSTATUS_SPP
5656
bnez t1, run_handler
@@ -67,8 +67,8 @@ run_handler:
6767
call trap_handler_trampoline
6868

6969
kernel_trap_restore:
70-
ld t0, 32*8(sp)
71-
ld t1, 33*8(sp)
70+
ld t0, 31*8(sp)
71+
ld t1, 32*8(sp)
7272

7373
// disable interrupts and restore sstatus and sepc
7474
and t2, t1, ~SSTATUS_SIE
@@ -86,10 +86,10 @@ restore_umode:
8686

8787
load_regs:
8888
.irp i, 1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
89-
ld x\i, \i*8(sp)
89+
ld x\i, (\i - 1)*8(sp)
9090
.endr
9191

92-
ld sp, 2*8(sp)
92+
ld sp, (2 - 1)*8(sp)
9393
sret
9494

9595
trap_restore_with_cleanup:

0 commit comments

Comments
 (0)