summaryrefslogtreecommitdiff
path: root/gen/docs/types.h
diff options
context:
space:
mode:
authorallexanderbergmans <allexander.bergmans@student.elisa.be>2026-07-03 12:17:10 +0200
committerallexanderbergmans <allexander.bergmans@student.elisa.be>2026-07-03 12:17:10 +0200
commit887875959aa84af92291db334898aaa20956e632 (patch)
tree62f68d6e93cf444e5605a40c3e8ea7ec0bd89f49 /gen/docs/types.h
Diffstat (limited to 'gen/docs/types.h')
-rw-r--r--gen/docs/types.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/gen/docs/types.h b/gen/docs/types.h
new file mode 100644
index 0000000..14fb4e0
--- /dev/null
+++ b/gen/docs/types.h
@@ -0,0 +1,78 @@
+#ifndef TYPES_H
+#define TYPES_H
+
+#include <stdint.h>
+#include <stddef.h>
+
+#define MAX_NAME 64
+#define MAX_LABEL 32
+#define MAX_DESC 512
+#define MAX_NOTE 512
+#define MAX_OPERANDS 128
+#define MAX_FIELDS 8
+#define MAX_INSTS 256
+#define MAX_REGS 64
+#define MAX_FMTS 16
+#define MAX_CSRS 128
+#define MAX_LINE 1024
+#define MAX_TOKENS 16
+#define MAX_PATH 256
+
+typedef struct {
+ char name[MAX_NAME];
+ int width;
+ int num_fields;
+ struct {
+ char name[MAX_LABEL];
+ int high;
+ int low;
+ } fields[MAX_FIELDS];
+} IsaFormat;
+
+typedef struct {
+ char name[MAX_NAME];
+ char abbr[MAX_LABEL];
+ char desc[MAX_DESC];
+ int preserve;
+ int caller_saved;
+ int arg_reg;
+ int index;
+} IsaRegister;
+
+typedef struct {
+ char name[MAX_NAME];
+ char fmt_name[MAX_NAME];
+ uint32_t opcode;
+ uint32_t funct3;
+ uint32_t funct7;
+ uint32_t funct3_valid;
+ uint32_t funct7_valid;
+ char operands[MAX_OPERANDS];
+ char desc[MAX_DESC];
+ char note[MAX_NOTE];
+ char category[MAX_LABEL];
+ int has_imm;
+} IsaInstruction;
+
+typedef struct {
+ char name[MAX_NAME];
+ int number;
+ char desc[MAX_DESC];
+} IsaCsr;
+
+typedef struct {
+ IsaFormat formats[MAX_FMTS];
+ int num_formats;
+ IsaRegister registers[MAX_REGS];
+ int num_registers;
+ IsaInstruction instructions[MAX_INSTS];
+ int num_instructions;
+ IsaCsr csrs[MAX_CSRS];
+ int num_csrs;
+ char arch_name[MAX_NAME];
+ char arch_version[MAX_LABEL];
+ char arch_date[MAX_LABEL];
+ char arch_status[MAX_LABEL];
+} IsaDb;
+
+#endif