diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-04-03 21:53:22 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-04-03 21:53:22 -0700 |
commit | c4350ef6ef6259e48509e125fd2d051969dc6efa (patch) | |
tree | 7f6b0900717eea640d687fc677d2cd39c97a9dd2 /riscv/mmu.h | |
parent | d9d73d80c1b738b3b30eb40d192f61cbdb0e201f (diff) | |
download | spike-c4350ef6ef6259e48509e125fd2d051969dc6efa.zip spike-c4350ef6ef6259e48509e125fd2d051969dc6efa.tar.gz spike-c4350ef6ef6259e48509e125fd2d051969dc6efa.tar.bz2 |
Support setting ISA/subsets with --isa flag
Default is RV64IMAFDC. Can do things like
--isa=RV32 (which implies IMAFDC)
--isa=IM (which implies RV64)
--isa=RV64IMAFDXhwacha
Diffstat (limited to 'riscv/mmu.h')
-rw-r--r-- | riscv/mmu.h | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/riscv/mmu.h b/riscv/mmu.h index d6f446b..a8853d3 100644 --- a/riscv/mmu.h +++ b/riscv/mmu.h @@ -12,13 +12,8 @@ #include <vector> // virtual memory configuration -typedef reg_t pte_t; -const reg_t LEVELS = sizeof(pte_t) == 8 ? 3 : 2; -const reg_t PGSHIFT = 12; -const reg_t PTIDXBITS = PGSHIFT - (sizeof(pte_t) == 8 ? 3 : 2); +#define PGSHIFT 12 const reg_t PGSIZE = 1 << PGSHIFT; -const reg_t VPN_BITS = PTIDXBITS * LEVELS; -const reg_t VA_BITS = VPN_BITS + PGSHIFT; struct insn_fetch_t { @@ -153,7 +148,7 @@ private: void* refill_tlb(reg_t addr, reg_t bytes, bool store, bool fetch); // perform a page table walk for a given VA; set referenced/dirty bits - pte_t walk(reg_t addr, bool supervisor, bool store, bool fetch); + reg_t walk(reg_t addr, bool supervisor, bool store, bool fetch); // translate a virtual address to a physical address void* translate(reg_t addr, reg_t bytes, bool store, bool fetch) |