aboutsummaryrefslogtreecommitdiff
path: root/riscv/processor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/processor.cc')
-rw-r--r--riscv/processor.cc36
1 files changed, 34 insertions, 2 deletions
diff --git a/riscv/processor.cc b/riscv/processor.cc
index 6734c02..af4f35b 100644
--- a/riscv/processor.cc
+++ b/riscv/processor.cc
@@ -221,7 +221,7 @@ void processor_t::parse_isa_string(const char* str)
char error_msg[256];
const char* p = lowercase.c_str();
- const char* all_subsets = "imafdqckhp"
+ const char* all_subsets = "imafdqchp"
#ifdef __SIZEOF_INT128__
"v"
#endif
@@ -290,6 +290,38 @@ void processor_t::parse_isa_string(const char* str)
extension_table[EXT_ZBC] = true;
} else if (ext_str == "zbs") {
extension_table[EXT_ZBS] = true;
+ } else if (ext_str == "zbkb") {
+ extension_table[EXT_ZBKB] = true;
+ } else if (ext_str == "zbkc") {
+ extension_table[EXT_ZBKC] = true;
+ } else if (ext_str == "zbkx") {
+ extension_table[EXT_ZBKX] = true;
+ } else if (ext_str == "zkn") {
+ extension_table[EXT_ZBKB] = true;
+ extension_table[EXT_ZBKC] = true;
+ extension_table[EXT_ZBKX] = true;
+ extension_table[EXT_ZKND] = true;
+ extension_table[EXT_ZKNE] = true;
+ extension_table[EXT_ZKNH] = true;
+ } else if (ext_str == "zknd") {
+ extension_table[EXT_ZKND] = true;
+ } else if (ext_str == "zkne") {
+ extension_table[EXT_ZKNE] = true;
+ } else if (ext_str == "zknh") {
+ extension_table[EXT_ZKNH] = true;
+ } else if (ext_str == "zks") {
+ extension_table[EXT_ZBKB] = true;
+ extension_table[EXT_ZBKC] = true;
+ extension_table[EXT_ZBKX] = true;
+ extension_table[EXT_ZKSED] = true;
+ extension_table[EXT_ZKSH] = true;
+ } else if (ext_str == "zksed") {
+ extension_table[EXT_ZKSED] = true;
+ } else if (ext_str == "zksh") {
+ extension_table[EXT_ZKSH] = true;
+ } else if (ext_str == "zkr") {
+ extension_table[EXT_ZKR] = true;
+ } else if (ext_str == "zkt") {
} else if (ext_str == "SVNAPOT") {
extension_table[EXT_SVNAPOT] = true;
} else if (ext_str == "SVPBMT") {
@@ -1170,7 +1202,7 @@ reg_t processor_t::get_csr(int which, insn_t insn, bool write, bool peek)
switch (which)
{
case CSR_SENTROPY:
- if (!extension_enabled('K'))
+ if (!extension_enabled(EXT_ZKR))
break;
/* Read-only access disallowed due to wipe-on-read side effect */
if (!write)