Multiple cleanups and improvements

- Cleanup exception trigger code
- Cleanup division to divide by 0
- Cleanup SRET code
- Cleanup CSR code
- Added interrupts
- Added TIMER interrupt
This commit is contained in:
2023-10-22 19:20:52 +02:00
parent a0935f0aad
commit 02114ea7d8
8 changed files with 193 additions and 56 deletions
+2 -2
View File
@@ -81,7 +81,7 @@ uint32_t mmu_resolve(rv32_cpu_t* cpu, memory_access_type_t access_type, uint32_t
if(!(pte & PTE_V))
{
// Invalid PTE
exception_trigger(cpu, mmu_scause_from_access(access_type));
exception_trigger(cpu, mmu_scause_from_access(access_type), vaddr);
}
if((pte & PTE_R) || (pte & PTE_W) || (pte & PTE_X))
@@ -109,7 +109,7 @@ uint32_t mmu_resolve(rv32_cpu_t* cpu, memory_access_type_t access_type, uint32_t
if(!(pte & PTE_V))
{
// Invalid PTE
exception_trigger(cpu, mmu_scause_from_access(access_type));
exception_trigger(cpu, mmu_scause_from_access(access_type), vaddr);
}
// This must be a leaf PTE, as Sv32 only supports 2-level mappings