Skip to content

Commit da546d9

Browse files
committed
Revert "Add Svukte extension support"
This reverts commit 0524e7b.
1 parent 0524e7b commit da546d9

File tree

6 files changed

+7
-55
lines changed

6 files changed

+7
-55
lines changed

disasm/isa_parser.cc

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,6 @@ isa_parser_t::isa_parser_t(const char* str, const char *priv)
265265
extension_table[EXT_SVPBMT] = true;
266266
} else if (ext_str == "svinval") {
267267
extension_table[EXT_SVINVAL] = true;
268-
} else if (ext_str == "svukte") {
269-
extension_table[EXT_SVUKTE] = true;
270268
} else if (ext_str == "zfa") {
271269
extension_table[EXT_ZFA] = true;
272270
} else if (ext_str == "zicbom") {

riscv/csr_init.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,6 @@ void state_t::csr_init(processor_t* const proc, reg_t max_isa)
329329
}
330330
const reg_t senvcfg_mask = (proc->extension_enabled(EXT_ZICBOM) ? SENVCFG_CBCFE | SENVCFG_CBIE : 0) |
331331
(proc->extension_enabled(EXT_ZICBOZ) ? SENVCFG_CBZE : 0) |
332-
(proc->extension_enabled(EXT_SVUKTE) ? SENVCFG_UKTE : 0) |
333332
(proc->extension_enabled(EXT_SSNPM) ? SENVCFG_PMM : 0) |
334333
(proc->extension_enabled(EXT_ZICFILP) ? SENVCFG_LPE : 0) |
335334
(proc->extension_enabled(EXT_ZICFISS) ? SENVCFG_SSE : 0);

riscv/csrs.cc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,8 +2020,7 @@ hstatus_csr_t::hstatus_csr_t(processor_t* const proc, const reg_t addr):
20202020
}
20212021

20222022
bool hstatus_csr_t::unlogged_write(const reg_t val) noexcept {
2023-
const reg_t mask = (proc->extension_enabled(EXT_SVUKTE) ? HSTATUS_HUKTE : 0)
2024-
| HSTATUS_VTSR | HSTATUS_VTW
2023+
const reg_t mask = HSTATUS_VTSR | HSTATUS_VTW
20252024
| (proc->supports_impl(IMPL_MMU) ? HSTATUS_VTVM : 0)
20262025
| (proc->extension_enabled(EXT_SSNPM) ? HSTATUS_HUPMM : 0)
20272026
| HSTATUS_HU | HSTATUS_SPVP | HSTATUS_SPV | HSTATUS_GVA;

riscv/isa_parser.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ typedef enum {
4747
EXT_SVNAPOT,
4848
EXT_SVPBMT,
4949
EXT_SVINVAL,
50-
EXT_SVUKTE,
5150
EXT_ZDINX,
5251
EXT_ZFA,
5352
EXT_ZFBFMIN,

riscv/mmu.cc

Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,6 @@ void throw_access_exception(bool virt, reg_t addr, access_type type)
5353
}
5454
}
5555

56-
[[noreturn]] void throw_page_access_exception(bool virt, reg_t addr, access_type type)
57-
{
58-
switch (type) {
59-
case FETCH: throw trap_instruction_page_fault(virt, addr, 0, 0);
60-
case LOAD: throw trap_load_page_fault(virt, addr, 0, 0);
61-
case STORE: throw trap_store_page_fault(virt, addr, 0, 0);
62-
default: abort();
63-
}
64-
}
65-
6656
reg_t mmu_t::translate(mem_access_info_t access_info, reg_t len)
6757
{
6858
reg_t addr = access_info.transformed_vaddr;
@@ -570,35 +560,6 @@ reg_t mmu_t::s2xlate(reg_t gva, reg_t gpa, access_type type, access_type trap_ty
570560
}
571561
}
572562

573-
bool mmu_t::check_svukte_qualified(reg_t addr, reg_t mode, bool forced_virt)
574-
{
575-
state_t* state = proc->get_state();
576-
577-
if (mode != PRV_U)
578-
return true;
579-
580-
if (proc->extension_enabled('S') && get_field(state->senvcfg->read(), SENVCFG_UKTE)) {
581-
if (forced_virt && state->prv == PRV_U) {
582-
bool hstatus_hukte = proc->extension_enabled('H') &&
583-
(get_field(state->hstatus->read(), HSTATUS_HUKTE) == 1);
584-
if (!hstatus_hukte)
585-
return true;
586-
}
587-
588-
if (((addr >> SYS_MEM_HEADING_BIT) & 0x1)) {
589-
if ((state->v || forced_virt) &&
590-
((proc->get_xlen() == 64) ? ((state->vsatp->read() & SATP64_MODE) == 0) :
591-
((state->vsatp->read() & SATP32_MODE) == 0))) {
592-
return true;
593-
} else {
594-
return false;
595-
}
596-
}
597-
}
598-
599-
return true;
600-
}
601-
602563
reg_t mmu_t::walk(mem_access_info_t access_info)
603564
{
604565
access_type type = access_info.type;
@@ -621,10 +582,6 @@ reg_t mmu_t::walk(mem_access_info_t access_info)
621582
if (vm.levels == 0)
622583
return s2xlate(addr, addr & ((reg_t(2) << (proc->xlen-1))-1), type, type, virt, hlvx, false) & ~page_mask; // zero-extend from xlen
623584

624-
if (proc->extension_enabled(EXT_SVUKTE) && !check_svukte_qualified(addr, mode, access_info.flags.forced_virt)) {
625-
throw_page_access_exception(virt, addr, type);
626-
}
627-
628585
bool s_mode = mode == PRV_S;
629586
bool sum = proc->state.sstatus->readvirt(virt) & MSTATUS_SUM;
630587
bool mxr = (proc->state.sstatus->readvirt(false) | proc->state.sstatus->readvirt(virt)) & MSTATUS_MXR;
@@ -715,7 +672,12 @@ reg_t mmu_t::walk(mem_access_info_t access_info)
715672
}
716673
}
717674

718-
throw_page_access_exception(virt, addr, type);
675+
switch (type) {
676+
case FETCH: throw trap_instruction_page_fault(virt, addr, 0, 0);
677+
case LOAD: throw trap_load_page_fault(virt, addr, 0, 0);
678+
case STORE: throw trap_store_page_fault(virt, addr, 0, 0);
679+
default: abort();
680+
}
719681
}
720682

721683
void mmu_t::register_memtracer(memtracer_t* t)

riscv/mmu.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ const reg_t PGSIZE = 1 << PGSHIFT;
3434
#define MMU_OBSERVE_STORE(addr, data, length)
3535
#endif
3636

37-
// Svukte extension
38-
#define SYS_MEM_HEADING_BIT 63
39-
4037
struct insn_fetch_t
4138
{
4239
insn_func_t func;
@@ -81,7 +78,6 @@ struct mem_access_info_t {
8178
};
8279

8380
void throw_access_exception(bool virt, reg_t addr, access_type type);
84-
[[noreturn]] void throw_page_access_exception(bool virt, reg_t addr, access_type type);
8581

8682
// this class implements a processor's port into the virtual memory system.
8783
// an MMU and instruction cache are maintained for simulator performance.
@@ -451,7 +447,6 @@ class mmu_t
451447
check_triggers(operation, address, virt, address, data);
452448
}
453449
void check_triggers(triggers::operation_t operation, reg_t address, bool virt, reg_t tval, std::optional<reg_t> data);
454-
bool check_svukte_qualified(reg_t addr, reg_t mode, bool forced_virt);
455450
reg_t translate(mem_access_info_t access_info, reg_t len);
456451

457452
reg_t pte_load(reg_t pte_paddr, reg_t addr, bool virt, access_type trap_type, size_t ptesize) {

0 commit comments

Comments
 (0)