-
Notifications
You must be signed in to change notification settings - Fork 0
/
wide_alu.h
160 lines (119 loc) · 4.32 KB
/
wide_alu.h
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
// Generated register defines for wide_alu
#ifndef _WIDE_ALU_REG_DEFS_
#define _WIDE_ALU_REG_DEFS_
#ifdef __cplusplus
extern "C" {
#endif
// Register width
#define WIDE_ALU_PARAM_REG_WIDTH 32
// Subword of Operand A. (common parameters)
#define WIDE_ALU_OP_A_OP_A_FIELD_WIDTH 32
#define WIDE_ALU_OP_A_OP_A_FIELDS_PER_REG 1
#define WIDE_ALU_OP_A_MULTIREG_COUNT 8
// Subword of Operand A.
#define WIDE_ALU_OP_A_0_REG_OFFSET 0x0
// Subword of Operand A.
#define WIDE_ALU_OP_A_1_REG_OFFSET 0x4
// Subword of Operand A.
#define WIDE_ALU_OP_A_2_REG_OFFSET 0x8
// Subword of Operand A.
#define WIDE_ALU_OP_A_3_REG_OFFSET 0xc
// Subword of Operand A.
#define WIDE_ALU_OP_A_4_REG_OFFSET 0x10
// Subword of Operand A.
#define WIDE_ALU_OP_A_5_REG_OFFSET 0x14
// Subword of Operand A.
#define WIDE_ALU_OP_A_6_REG_OFFSET 0x18
// Subword of Operand A.
#define WIDE_ALU_OP_A_7_REG_OFFSET 0x1c
// Subword of Operand B. (common parameters)
#define WIDE_ALU_OP_B_OP_B_FIELD_WIDTH 32
#define WIDE_ALU_OP_B_OP_B_FIELDS_PER_REG 1
#define WIDE_ALU_OP_B_MULTIREG_COUNT 8
// Subword of Operand B.
#define WIDE_ALU_OP_B_0_REG_OFFSET 0x20
// Subword of Operand B.
#define WIDE_ALU_OP_B_1_REG_OFFSET 0x24
// Subword of Operand B.
#define WIDE_ALU_OP_B_2_REG_OFFSET 0x28
// Subword of Operand B.
#define WIDE_ALU_OP_B_3_REG_OFFSET 0x2c
// Subword of Operand B.
#define WIDE_ALU_OP_B_4_REG_OFFSET 0x30
// Subword of Operand B.
#define WIDE_ALU_OP_B_5_REG_OFFSET 0x34
// Subword of Operand B.
#define WIDE_ALU_OP_B_6_REG_OFFSET 0x38
// Subword of Operand B.
#define WIDE_ALU_OP_B_7_REG_OFFSET 0x3c
// Subword of results. (common parameters)
#define WIDE_ALU_RESULT_RESULT_FIELD_WIDTH 32
#define WIDE_ALU_RESULT_RESULT_FIELDS_PER_REG 1
#define WIDE_ALU_RESULT_MULTIREG_COUNT 16
// Subword of results.
#define WIDE_ALU_RESULT_0_REG_OFFSET 0x40
// Subword of results.
#define WIDE_ALU_RESULT_1_REG_OFFSET 0x44
// Subword of results.
#define WIDE_ALU_RESULT_2_REG_OFFSET 0x48
// Subword of results.
#define WIDE_ALU_RESULT_3_REG_OFFSET 0x4c
// Subword of results.
#define WIDE_ALU_RESULT_4_REG_OFFSET 0x50
// Subword of results.
#define WIDE_ALU_RESULT_5_REG_OFFSET 0x54
// Subword of results.
#define WIDE_ALU_RESULT_6_REG_OFFSET 0x58
// Subword of results.
#define WIDE_ALU_RESULT_7_REG_OFFSET 0x5c
// Subword of results.
#define WIDE_ALU_RESULT_8_REG_OFFSET 0x60
// Subword of results.
#define WIDE_ALU_RESULT_9_REG_OFFSET 0x64
// Subword of results.
#define WIDE_ALU_RESULT_10_REG_OFFSET 0x68
// Subword of results.
#define WIDE_ALU_RESULT_11_REG_OFFSET 0x6c
// Subword of results.
#define WIDE_ALU_RESULT_12_REG_OFFSET 0x70
// Subword of results.
#define WIDE_ALU_RESULT_13_REG_OFFSET 0x74
// Subword of results.
#define WIDE_ALU_RESULT_14_REG_OFFSET 0x78
// Subword of results.
#define WIDE_ALU_RESULT_15_REG_OFFSET 0x7c
// Controls clear and trigger signal of the deaccelerator.
#define WIDE_ALU_CTRL1_REG_OFFSET 0x80
#define WIDE_ALU_CTRL1_TRIGGER_BIT 0
#define WIDE_ALU_CTRL1_CLEAR_ERR_BIT 1
// Configures the operation and its delay within the deaccelerator.
#define WIDE_ALU_CTRL2_REG_OFFSET 0x84
#define WIDE_ALU_CTRL2_OPSEL_MASK 0x7
#define WIDE_ALU_CTRL2_OPSEL_OFFSET 0
#define WIDE_ALU_CTRL2_OPSEL_FIELD \
((bitfield_field32_t) { .mask = WIDE_ALU_CTRL2_OPSEL_MASK, .index = WIDE_ALU_CTRL2_OPSEL_OFFSET })
#define WIDE_ALU_CTRL2_OPSEL_VALUE_ADD 0x0
#define WIDE_ALU_CTRL2_OPSEL_VALUE_SUB 0x1
#define WIDE_ALU_CTRL2_OPSEL_VALUE_MUL 0x2
#define WIDE_ALU_CTRL2_OPSEL_VALUE_XOR 0x3
#define WIDE_ALU_CTRL2_OPSEL_VALUE_AND 0x4
#define WIDE_ALU_CTRL2_OPSEL_VALUE_OR 0x5
#define WIDE_ALU_CTRL2_DELAY_MASK 0xff
#define WIDE_ALU_CTRL2_DELAY_OFFSET 16
#define WIDE_ALU_CTRL2_DELAY_FIELD \
((bitfield_field32_t) { .mask = WIDE_ALU_CTRL2_DELAY_MASK, .index = WIDE_ALU_CTRL2_DELAY_OFFSET })
// Contains the current status of the Deaccelerator.
#define WIDE_ALU_STATUS_REG_OFFSET 0x88
#define WIDE_ALU_STATUS_CODE_MASK 0x3
#define WIDE_ALU_STATUS_CODE_OFFSET 0
#define WIDE_ALU_STATUS_CODE_FIELD \
((bitfield_field32_t) { .mask = WIDE_ALU_STATUS_CODE_MASK, .index = WIDE_ALU_STATUS_CODE_OFFSET })
#define WIDE_ALU_STATUS_CODE_VALUE_IDLE 0x0
#define WIDE_ALU_STATUS_CODE_VALUE_PENDING 0x1
#define WIDE_ALU_STATUS_CODE_VALUE_ERROR_WRITE 0x2
#define WIDE_ALU_STATUS_CODE_VALUE_ERROR_OPCODE 0x3
#ifdef __cplusplus
} // extern "C"
#endif
#endif // _WIDE_ALU_REG_DEFS_
// End generated register defines for wide_alu