添加异常信息打印
This commit is contained in:
@@ -698,6 +698,7 @@ int riscv_init(riscv_t* riscv, uint32_t* rom, uint32_t rom_addr_base, uint32_t r
|
||||
riscv->rom_size = rom_size;
|
||||
riscv->rom_addr_base = rom_addr_base;
|
||||
riscv->pc = riscv->rom_addr_base;
|
||||
riscv->ra = 0xffffffff;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -732,8 +733,8 @@ int riscv_irq_check(riscv_t* riscv) {
|
||||
irq_num = 11;
|
||||
}
|
||||
riscv->mtval = 0;
|
||||
riscv_enter_trap(riscv, 1, irq_num);
|
||||
if (irq_num>0) {
|
||||
riscv_enter_trap(riscv, 1, irq_num);
|
||||
riscv->mip &= ~(1 << irq_num);
|
||||
irq_num = 0;
|
||||
}
|
||||
@@ -746,15 +747,14 @@ int riscv_run(riscv_t* riscv) {
|
||||
int ret = 0;
|
||||
uint32_t pc;
|
||||
while (1) {
|
||||
if (riscv->pc == 0) {
|
||||
if (riscv->pc == 0xfffffffe && riscv->ra == 0xffffffff) {
|
||||
break;
|
||||
}
|
||||
if (riscv->pc >= riscv->rom_addr_base + riscv->rom_size || riscv->pc < riscv->rom_addr_base) {
|
||||
// 指令访问失败
|
||||
riscv->mtval = riscv->pc;
|
||||
printf("riscv run out of rom pc=%08x\n",riscv->pc);
|
||||
// printf("riscv run out of rom pc=%08x\n",riscv->pc);
|
||||
riscv_enter_trap(riscv, 0, 1);
|
||||
printf("riscv run out of rom pc=%08x\n",riscv->pc);
|
||||
}
|
||||
if (riscv->pc & 0x3) {
|
||||
// 指令地址未对齐
|
||||
|
Reference in New Issue
Block a user