Browse Source

Use pointer-sized entries in trap table

This allows bbl to be loaded above 4 GiB on RV64.
pull/168/head
Andrew Waterman 7 years ago
parent
commit
3d681ed0d0
  1. 38
      machine/mentry.S

38
machine/mentry.S

@ -8,27 +8,27 @@
.align 6 .align 6
trap_table: trap_table:
#define BAD_TRAP_VECTOR 0 #define BAD_TRAP_VECTOR 0
.word bad_trap .dc.a bad_trap
.word pmp_trap .dc.a pmp_trap
.word illegal_insn_trap .dc.a illegal_insn_trap
.word bad_trap .dc.a bad_trap
.word misaligned_load_trap .dc.a misaligned_load_trap
.word pmp_trap .dc.a pmp_trap
.word misaligned_store_trap .dc.a misaligned_store_trap
.word pmp_trap .dc.a pmp_trap
.word bad_trap .dc.a bad_trap
.word mcall_trap .dc.a mcall_trap
.word bad_trap .dc.a bad_trap
#ifdef BBL_BOOT_MACHINE #ifdef BBL_BOOT_MACHINE
.word mcall_trap .dc.a mcall_trap
#else #else
.word bad_trap .dc.a bad_trap
#endif /* BBL_BOOT_MACHINE */ #endif /* BBL_BOOT_MACHINE */
.word bad_trap .dc.a bad_trap
#define TRAP_FROM_MACHINE_MODE_VECTOR 13 #define TRAP_FROM_MACHINE_MODE_VECTOR 13
.word __trap_from_machine_mode .dc.a __trap_from_machine_mode
.word bad_trap .dc.a bad_trap
.word bad_trap .dc.a bad_trap
.option norvc .option norvc
.section .text.init,"ax",@progbits .section .text.init,"ax",@progbits
@ -112,11 +112,11 @@ trap_vector:
STORE t0, 5*REGBYTES(sp) STORE t0, 5*REGBYTES(sp)
1:auipc t0, %pcrel_hi(trap_table) # t0 <- %hi(trap_table) 1:auipc t0, %pcrel_hi(trap_table) # t0 <- %hi(trap_table)
STORE t1, 6*REGBYTES(sp) STORE t1, 6*REGBYTES(sp)
sll t1, a1, 2 # t1 <- mcause << 2 sll t1, a1, LOG_REGBYTES # t1 <- mcause * ptr size
STORE t2, 7*REGBYTES(sp) STORE t2, 7*REGBYTES(sp)
add t1, t0, t1 # t1 <- %hi(trap_table)[mcause] add t1, t0, t1 # t1 <- %hi(trap_table)[mcause]
STORE s0, 8*REGBYTES(sp) STORE s0, 8*REGBYTES(sp)
LWU t1, %pcrel_lo(1b)(t1) # t1 <- trap_table[mcause] LOAD t1, %pcrel_lo(1b)(t1) # t1 <- trap_table[mcause]
STORE s1, 9*REGBYTES(sp) STORE s1, 9*REGBYTES(sp)
mv a0, sp # a0 <- regs mv a0, sp # a0 <- regs
STORE a2,12*REGBYTES(sp) STORE a2,12*REGBYTES(sp)

Loading…
Cancel
Save