aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xparse.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/parse.py b/parse.py
index 4903bed..83c1d72 100755
--- a/parse.py
+++ b/parse.py
@@ -813,6 +813,13 @@ def make_c(instr_dict):
causes_str += f"#define CAUSE_{name.upper().replace(' ', '_')} {hex(num)}\n"
declare_cause_str += f"DECLARE_CAUSE(\"{name}\", CAUSE_{name.upper().replace(' ','_')})\n"
+ arg_str = ''
+ for name, rng in arg_lut.items():
+ begin = rng[1]
+ end = rng[0]
+ mask = ((1 << (end - begin + 1)) - 1) << begin
+ arg_str += f"#define INSN_FIELD_{name.upper().replace(' ', '_')} {hex(mask)}\n"
+
with open('encoding.h', 'r') as file:
enc_header = file.read()
@@ -829,7 +836,8 @@ def make_c(instr_dict):
#define RISCV_ENCODING_H
{mask_match_str}
{csr_names_str}
-{causes_str}#endif
+{causes_str}
+{arg_str}#endif
#ifdef DECLARE_INSN
{declare_insn_str}#endif
#ifdef DECLARE_CSR