blob: 14fb4e0d8c573002c2f6ea5f4873040ede900e21 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
|