Change regcache list to be an hash map
[deliverable/binutils-gdb.git] / opcodes / riscv-dis.c
index f26a46e0b34aa8c2e59530714f18d1126317a92b..655ce4ad0b205434c4206fbc5c285c5df31afd53 100644 (file)
@@ -27,6 +27,7 @@
 #include "opintl.h"
 #include "elf-bfd.h"
 #include "elf/riscv.h"
+#include "elfxx-riscv.h"
 
 #include "bfd_stdint.h"
 #include <ctype.h>
@@ -376,9 +377,12 @@ print_insn_args (const char *d, insn_t l, bfd_vma pc, disassemble_info *info)
                if (default_priv_spec == PRIV_SPEC_CLASS_NONE)
                  default_priv_spec = PRIV_SPEC_CLASS_DRAFT - 1;
 
-#define DECLARE_CSR(name, num, class, define_version, abort_version) \
-               if (default_priv_spec >= define_version              \
-                   && default_priv_spec < abort_version)            \
+#define DECLARE_CSR(name, num, class, define_version, abort_version)   \
+               if (riscv_csr_hash[num] == NULL                         \
+                   && ((define_version == PRIV_SPEC_CLASS_NONE         \
+                        && abort_version == PRIV_SPEC_CLASS_NONE)      \
+                       || (default_priv_spec >= define_version         \
+                           && default_priv_spec < abort_version)))     \
                  riscv_csr_hash[num] = #name;
 #define DECLARE_CSR_ALIAS(name, num, class, define_version, abort_version) \
                DECLARE_CSR (name, num, class, define_version, abort_version)
This page took 0.037328 seconds and 4 git commands to generate.