40#define RV32IMACFD_DEBUG_CALL 0
46 headers_.insert(
"Arch/RV32IMACFD/RV32IMACFD.h");
75 for (
int i = 0; i < 32; ++i)
77 rv32imacfdcpu->
ins_X[i] = 0;
78 rv32imacfdcpu->
X[i] = &rv32imacfdcpu->
ins_X[i];
80 for (
int i = 0; i < 4096; ++i)
83 rv32imacfdcpu->
CSR[i] = &rv32imacfdcpu->
ins_CSR[i];
85 for (
int i = 0; i < 32; ++i)
87 rv32imacfdcpu->
ins_F[i] = 0;
88 rv32imacfdcpu->
F[i] = &rv32imacfdcpu->
ins_F[i];
91 rv32imacfdcpu->
ZERO = 0;
92 rv32imacfdcpu->
RA = 0;
93 rv32imacfdcpu->
SP = 0;
94 rv32imacfdcpu->
GP = 0;
95 rv32imacfdcpu->
TP = 0;
96 rv32imacfdcpu->
T0 = 0;
97 rv32imacfdcpu->
T1 = 0;
98 rv32imacfdcpu->
T2 = 0;
99 rv32imacfdcpu->
S0 = 0;
100 rv32imacfdcpu->
S1 = 0;
101 rv32imacfdcpu->
A0 = 0;
102 rv32imacfdcpu->
A1 = 0;
103 rv32imacfdcpu->
A2 = 0;
104 rv32imacfdcpu->
A3 = 0;
105 rv32imacfdcpu->
A4 = 0;
106 rv32imacfdcpu->
A5 = 0;
107 rv32imacfdcpu->
A6 = 0;
108 rv32imacfdcpu->
A7 = 0;
109 rv32imacfdcpu->
S2 = 0;
110 rv32imacfdcpu->
S3 = 0;
111 rv32imacfdcpu->
S4 = 0;
112 rv32imacfdcpu->
S5 = 0;
113 rv32imacfdcpu->
S6 = 0;
114 rv32imacfdcpu->
S7 = 0;
115 rv32imacfdcpu->
S8 = 0;
116 rv32imacfdcpu->
S9 = 0;
117 rv32imacfdcpu->
S10 = 0;
118 rv32imacfdcpu->
S11 = 0;
119 rv32imacfdcpu->
T3 = 0;
120 rv32imacfdcpu->
T4 = 0;
121 rv32imacfdcpu->
T5 = 0;
122 rv32imacfdcpu->
T6 = 0;
123 for (
int i = 0; i < 8; ++i)
125 rv32imacfdcpu->
FENCE[i] = 0;
127 for (
int i = 0; i < 8; ++i)
129 rv32imacfdcpu->
RES[i] = 0;
131 rv32imacfdcpu->
PRIV = 0;
132 rv32imacfdcpu->
DPC = 0;
133 rv32imacfdcpu->
FCSR = 0;
134 rv32imacfdcpu->
FFLAGS = 0;
135 rv32imacfdcpu->
FRM = 0;
137 rv32imacfdcpu->
MIE = 0;
138 rv32imacfdcpu->
MIP = 0;
139 rv32imacfdcpu->
CYCLE = 0;
140 rv32imacfdcpu->
CYCLEH = 0;
141 rv32imacfdcpu->
MCYCLE = 0;
143 rv32imacfdcpu->
TIME = 0;
144 rv32imacfdcpu->
TIMEH = 0;
151 rv32imacfdcpu->
MIMPID = 0;
153 rv32imacfdcpu->
MISA = 0;
156 rv32imacfdcpu->
MTVEC = 0;
159 rv32imacfdcpu->
MEPC = 0;
160 rv32imacfdcpu->
MCAUSE = 0;
161 rv32imacfdcpu->
MTVAL = 0;
162 rv32imacfdcpu->
FT0 = 0;
163 rv32imacfdcpu->
FT1 = 0;
164 rv32imacfdcpu->
FT2 = 0;
165 rv32imacfdcpu->
FT3 = 0;
166 rv32imacfdcpu->
FT4 = 0;
167 rv32imacfdcpu->
FT5 = 0;
168 rv32imacfdcpu->
FT6 = 0;
169 rv32imacfdcpu->
FT7 = 0;
170 rv32imacfdcpu->
FS0 = 0;
171 rv32imacfdcpu->
FS1 = 0;
172 rv32imacfdcpu->
FA0 = 0;
173 rv32imacfdcpu->
FA1 = 0;
174 rv32imacfdcpu->
FA2 = 0;
175 rv32imacfdcpu->
FA3 = 0;
176 rv32imacfdcpu->
FA4 = 0;
177 rv32imacfdcpu->
FA5 = 0;
178 rv32imacfdcpu->
FA6 = 0;
179 rv32imacfdcpu->
FA7 = 0;
180 rv32imacfdcpu->
FS2 = 0;
181 rv32imacfdcpu->
FS3 = 0;
182 rv32imacfdcpu->
FS4 = 0;
183 rv32imacfdcpu->
FS5 = 0;
184 rv32imacfdcpu->
FS6 = 0;
185 rv32imacfdcpu->
FS7 = 0;
186 rv32imacfdcpu->
FS8 = 0;
187 rv32imacfdcpu->
FS9 = 0;
188 rv32imacfdcpu->
FS10 = 0;
189 rv32imacfdcpu->
FS11 = 0;
190 rv32imacfdcpu->
FT8 = 0;
191 rv32imacfdcpu->
FT9 = 0;
192 rv32imacfdcpu->
FT10 = 0;
193 rv32imacfdcpu->
FT11 = 0;
196 rv32imacfdcpu->
X[0] = &rv32imacfdcpu->
ZERO;
197 rv32imacfdcpu->
X[1] = &rv32imacfdcpu->
RA;
198 rv32imacfdcpu->
X[2] = &rv32imacfdcpu->
SP;
199 rv32imacfdcpu->
X[3] = &rv32imacfdcpu->
GP;
200 rv32imacfdcpu->
X[4] = &rv32imacfdcpu->
TP;
201 rv32imacfdcpu->
X[5] = &rv32imacfdcpu->
T0;
202 rv32imacfdcpu->
X[6] = &rv32imacfdcpu->
T1;
203 rv32imacfdcpu->
X[7] = &rv32imacfdcpu->
T2;
204 rv32imacfdcpu->
X[8] = &rv32imacfdcpu->
S0;
205 rv32imacfdcpu->
X[9] = &rv32imacfdcpu->
S1;
206 rv32imacfdcpu->
X[10] = &rv32imacfdcpu->
A0;
207 rv32imacfdcpu->
X[11] = &rv32imacfdcpu->
A1;
208 rv32imacfdcpu->
X[12] = &rv32imacfdcpu->
A2;
209 rv32imacfdcpu->
X[13] = &rv32imacfdcpu->
A3;
210 rv32imacfdcpu->
X[14] = &rv32imacfdcpu->
A4;
211 rv32imacfdcpu->
X[15] = &rv32imacfdcpu->
A5;
212 rv32imacfdcpu->
X[16] = &rv32imacfdcpu->
A6;
213 rv32imacfdcpu->
X[17] = &rv32imacfdcpu->
A7;
214 rv32imacfdcpu->
X[18] = &rv32imacfdcpu->
S2;
215 rv32imacfdcpu->
X[19] = &rv32imacfdcpu->
S3;
216 rv32imacfdcpu->
X[20] = &rv32imacfdcpu->
S4;
217 rv32imacfdcpu->
X[21] = &rv32imacfdcpu->
S5;
218 rv32imacfdcpu->
X[22] = &rv32imacfdcpu->
S6;
219 rv32imacfdcpu->
X[23] = &rv32imacfdcpu->
S7;
220 rv32imacfdcpu->
X[24] = &rv32imacfdcpu->
S8;
221 rv32imacfdcpu->
X[25] = &rv32imacfdcpu->
S9;
222 rv32imacfdcpu->
X[26] = &rv32imacfdcpu->
S10;
223 rv32imacfdcpu->
X[27] = &rv32imacfdcpu->
S11;
224 rv32imacfdcpu->
X[28] = &rv32imacfdcpu->
T3;
225 rv32imacfdcpu->
X[29] = &rv32imacfdcpu->
T4;
226 rv32imacfdcpu->
X[30] = &rv32imacfdcpu->
T5;
227 rv32imacfdcpu->
X[31] = &rv32imacfdcpu->
T6;
228 rv32imacfdcpu->
CSR[3] = &rv32imacfdcpu->
FCSR;
229 rv32imacfdcpu->
CSR[1] = &rv32imacfdcpu->
FFLAGS;
230 rv32imacfdcpu->
CSR[2] = &rv32imacfdcpu->
FRM;
231 rv32imacfdcpu->
CSR[768] = &rv32imacfdcpu->
MSTATUS;
232 rv32imacfdcpu->
CSR[772] = &rv32imacfdcpu->
MIE;
233 rv32imacfdcpu->
CSR[836] = &rv32imacfdcpu->
MIP;
234 rv32imacfdcpu->
CSR[3072] = &rv32imacfdcpu->
CYCLE;
235 rv32imacfdcpu->
CSR[3200] = &rv32imacfdcpu->
CYCLEH;
236 rv32imacfdcpu->
CSR[2816] = &rv32imacfdcpu->
MCYCLE;
237 rv32imacfdcpu->
CSR[2944] = &rv32imacfdcpu->
MCYCLEH;
238 rv32imacfdcpu->
CSR[3073] = &rv32imacfdcpu->
TIME;
239 rv32imacfdcpu->
CSR[3201] = &rv32imacfdcpu->
TIMEH;
240 rv32imacfdcpu->
CSR[3074] = &rv32imacfdcpu->
INSTRET;
241 rv32imacfdcpu->
CSR[3202] = &rv32imacfdcpu->
INSTRETH;
242 rv32imacfdcpu->
CSR[2818] = &rv32imacfdcpu->
MINSTRET;
245 rv32imacfdcpu->
CSR[3858] = &rv32imacfdcpu->
MARCHID;
246 rv32imacfdcpu->
CSR[3859] = &rv32imacfdcpu->
MIMPID;
247 rv32imacfdcpu->
CSR[3860] = &rv32imacfdcpu->
MHARTID;
248 rv32imacfdcpu->
CSR[769] = &rv32imacfdcpu->
MISA;
249 rv32imacfdcpu->
CSR[770] = &rv32imacfdcpu->
MEDELEG;
250 rv32imacfdcpu->
CSR[771] = &rv32imacfdcpu->
MIDELEG;
251 rv32imacfdcpu->
CSR[773] = &rv32imacfdcpu->
MTVEC;
253 rv32imacfdcpu->
CSR[832] = &rv32imacfdcpu->
MSCRATCH;
254 rv32imacfdcpu->
CSR[833] = &rv32imacfdcpu->
MEPC;
255 rv32imacfdcpu->
CSR[834] = &rv32imacfdcpu->
MCAUSE;
256 rv32imacfdcpu->
CSR[835] = &rv32imacfdcpu->
MTVAL;
257 rv32imacfdcpu->
F[0] = &rv32imacfdcpu->
FT0;
258 rv32imacfdcpu->
F[1] = &rv32imacfdcpu->
FT1;
259 rv32imacfdcpu->
F[2] = &rv32imacfdcpu->
FT2;
260 rv32imacfdcpu->
F[3] = &rv32imacfdcpu->
FT3;
261 rv32imacfdcpu->
F[4] = &rv32imacfdcpu->
FT4;
262 rv32imacfdcpu->
F[5] = &rv32imacfdcpu->
FT5;
263 rv32imacfdcpu->
F[6] = &rv32imacfdcpu->
FT6;
264 rv32imacfdcpu->
F[7] = &rv32imacfdcpu->
FT7;
265 rv32imacfdcpu->
F[8] = &rv32imacfdcpu->
FS0;
266 rv32imacfdcpu->
F[9] = &rv32imacfdcpu->
FS1;
267 rv32imacfdcpu->
F[10] = &rv32imacfdcpu->
FA0;
268 rv32imacfdcpu->
F[11] = &rv32imacfdcpu->
FA1;
269 rv32imacfdcpu->
F[12] = &rv32imacfdcpu->
FA2;
270 rv32imacfdcpu->
F[13] = &rv32imacfdcpu->
FA3;
271 rv32imacfdcpu->
F[14] = &rv32imacfdcpu->
FA4;
272 rv32imacfdcpu->
F[15] = &rv32imacfdcpu->
FA5;
273 rv32imacfdcpu->
F[16] = &rv32imacfdcpu->
FA6;
274 rv32imacfdcpu->
F[17] = &rv32imacfdcpu->
FA7;
275 rv32imacfdcpu->
F[18] = &rv32imacfdcpu->
FS2;
276 rv32imacfdcpu->
F[19] = &rv32imacfdcpu->
FS3;
277 rv32imacfdcpu->
F[20] = &rv32imacfdcpu->
FS4;
278 rv32imacfdcpu->
F[21] = &rv32imacfdcpu->
FS5;
279 rv32imacfdcpu->
F[22] = &rv32imacfdcpu->
FS6;
280 rv32imacfdcpu->
F[23] = &rv32imacfdcpu->
FS7;
281 rv32imacfdcpu->
F[24] = &rv32imacfdcpu->
FS8;
282 rv32imacfdcpu->
F[25] = &rv32imacfdcpu->
FS9;
283 rv32imacfdcpu->
F[26] = &rv32imacfdcpu->
FS10;
284 rv32imacfdcpu->
F[27] = &rv32imacfdcpu->
FS11;
285 rv32imacfdcpu->
F[28] = &rv32imacfdcpu->
FT8;
286 rv32imacfdcpu->
F[29] = &rv32imacfdcpu->
FT9;
287 rv32imacfdcpu->
F[30] = &rv32imacfdcpu->
FT10;
288 rv32imacfdcpu->
F[31] = &rv32imacfdcpu->
FT11;
290 rv32imacfdcpu->
PRIV = 3ULL;
291 rv32imacfdcpu->
DPC = 0LL;
292 *rv32imacfdcpu->
CSR[0] = 11ULL;
293 *rv32imacfdcpu->
CSR[256] = 11ULL;
294 *rv32imacfdcpu->
CSR[768] = 11ULL;
295 *rv32imacfdcpu->
CSR[769] = 1075056941ULL;
296 *rv32imacfdcpu->
CSR[3088] = 3ULL;
297 *rv32imacfdcpu->
CSR[772] = 4294966203ULL;
298 *rv32imacfdcpu->
CSR[260] = 4294964019ULL;
299 *rv32imacfdcpu->
CSR[4] = 4294963473ULL;
334 cb.
fileglobalCode().insert(
"#include \"Arch/RV32IMACFD/RV32IMACFD.h\"\n");
335 cb.
fileglobalCode().insert(
"#include \"Arch/RV32IMACFD/RV32IMACFDFuncs.h\"\n");
const char *const reg_name[]
Generated on Mon, 15 Jun 2026 06:54:08 +0000.
etiss::instr::InstructionCollection RV32IMACFDISA("RV32IMACFDISA", ISA16_RV32IMACFDClass, ISA32_RV32IMACFDClass)
etiss::instr::InstructionGroup ISA32_RV32IMACFD("ISA32_RV32IMACFD", 32)
etiss::instr::InstructionClass ISA16_RV32IMACFDClass(1, "ISA16_RV32IMACFD", 16, ISA16_RV32IMACFD)
etiss::instr::InstructionGroup ISA16_RV32IMACFD("ISA16_RV32IMACFD", 16)
etiss::instr::InstructionClass ISA32_RV32IMACFDClass(1, "ISA32_RV32IMACFD", 32, ISA32_RV32IMACFD)
__DEVICE__ void * memset(void *__a, int __b, size_t __c)
RV32IMACFDArch(unsigned int)
virtual void deleteCPU(ETISS_CPU *)
delete cpu structure
virtual ETISS_CPU * newCPU()
allocate new cpu structure
RV32IMACFDGDBCore gdbcore_
virtual const std::set< std::string > & getHeaders() const
required headers (RV32IMACFD.h)
virtual unsigned getMaximumInstructionSizeInBytes()
std::set< std::string > listenerSupportedRegisters_
virtual unsigned getInstructionSizeInBytes()
virtual etiss::plugin::gdb::GDBCore & getGDBCore()
get the GDBcore for RV32IMACFD architecture
virtual const std::set< std::string > & getListenerSupportedRegisters()
virtual void initCodeBlock(etiss::CodeBlock &cb) const
called before instructions are translated for the code block
virtual void resetCPU(ETISS_CPU *cpu, etiss::uint64 *startpointer)
reset cpu (structure)
std::set< std::string > headers_
the interface to translate instructions of and processor architecture
std::set< std::string > & functionglobalCode()
std::set< std::string > & fileglobalCode()
maps to VariableInstructionSet
maps to ModedInstructionSet
provides to architecture dependent registers as defined by gdb
basic cpu state structure needed for execution of any cpu architecture.
etiss_uint64 instructionPointer
pointer to next instruction.
etiss_uint64 cpuCycleTime_ps
frequency of the cpu. use to allign e.g. memory delays
etiss_uint64 cpuTime_ps
simulation time of cpu
etiss_uint32 mode
instruction set mode of the processor
Generated on Mon, 15 Jun 2026 06:54:08 +0000.
etiss_uint32 ins_CSR[4096]