From a119a164ca938a0e9abdfb8bc9dfb855c6a80303 Mon Sep 17 00:00:00 2001 From: Jordan Carlin Date: Sat, 12 Jul 2025 12:18:46 -0700 Subject: [PATCH] fix: replace `-` and `.` with `_` in generated C header `-` and `.` are not legal in the name of a `#define` in C. This replaces `-` and `.` with `_` in CSR and exception code names in the generated C header, as is already done for instruction names. --- backends/generators/c_header/generate_encoding.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/backends/generators/c_header/generate_encoding.py b/backends/generators/c_header/generate_encoding.py index 3c02a411c..df1ea2776 100644 --- a/backends/generators/c_header/generate_encoding.py +++ b/backends/generators/c_header/generate_encoding.py @@ -79,7 +79,10 @@ def load_exception_codes(ext_dir, enabled_extensions=None, include_all=False): if num is not None and name is not None: sanitized_name = ( - name.lower().replace(" ", "_").replace("/", "_") + name.lower() + .replace(" ", "_") + .replace("/", "_") + .replace("-", "_") ) exception_codes.append((num, sanitized_name)) @@ -361,8 +364,8 @@ def main(): csr_names_str = "" declare_csr_str = "" for addr, name in sorted(csrs.items()): - csr_names_str += f"#define CSR_{name.upper()} 0x{addr:x}\n" - declare_csr_str += f"DECLARE_CSR({name.lower()}, CSR_{name.upper()})\n" + csr_names_str += f"#define CSR_{name.upper().replace(".","_")} 0x{addr:x}\n" + declare_csr_str += f"DECLARE_CSR({name.lower().replace(".","_")}, CSR_{name.upper().replace(".","_")})\n" causes_str = "" declare_cause_str = ""