添加异常信息打印

This commit is contained in:
2025-04-19 00:42:20 +08:00
parent 38d433558d
commit fe515858e5
4 changed files with 81 additions and 13 deletions

View File

@@ -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) {
// 指令地址未对齐