Define data structures for mapping the ARM ID registers and ID register
fields.

Co-authored-by: Khushit Shah <[email protected]>
Signed-off-by: Shaju Abraham <[email protected]>
---
 target/arm/cpu-idregs.h | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 target/arm/cpu-idregs.h

diff --git a/target/arm/cpu-idregs.h b/target/arm/cpu-idregs.h
new file mode 100644
index 0000000000..403190cbd7
--- /dev/null
+++ b/target/arm/cpu-idregs.h
@@ -0,0 +1,41 @@
+/*
+ *   ARM ID register field table -- shared declarations.
+ *
+ *   SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef CPU_IDREGS_H
+#define CPU_IDREGS_H
+
+typedef enum ArmIdRegSafeRule {
+    IDREG_SAFE_LOWER,
+    IDREG_SAFE_HIGHER,
+    IDREG_SAFE_HIGHER_OR_ZERO,
+    IDREG_SAFE_SIGNED_LOWER,
+    IDREG_SAFE_EXACT,
+    IDREG_SAFE_ANY,
+} ArmIdRegSafeRule;
+
+typedef struct ArmIdRegArchVal {
+    uint64_t value;
+    const char *name;
+} ArmIdRegArchVal;
+
+typedef struct ArmIdRegField {
+    const char *name;
+    uint32_t shift;
+    uint32_t length;
+    ArmIdRegSafeRule safe_rule;
+    uint64_t default_val;
+    ArmIdRegArchVal *arch_vals;
+    uint32_t arch_vals_count;
+} ArmIdRegField;
+
+typedef struct ArmIdReg {
+    const char *name;
+    struct ArmIdRegField *fields;
+    uint32_t fields_count;
+} ArmIdReg;
+
+
+#endif /* CPU_IDREGS_H */
-- 
2.52.0


Reply via email to