40 #define RV32IMACFD_DEBUG_CALL 0
41 using namespace etiss ;
46 headers_.insert(
"Arch/RV32IMACFD/RV32IMACFD.h");
74 for (
int i = 0; i < 32; ++i) {
75 rv32imacfdcpu->
ins_X[i] = 0;
76 rv32imacfdcpu->
X[i] = &rv32imacfdcpu->
ins_X[i];
78 for (
int i = 0; i < 4096; ++i) {
80 rv32imacfdcpu->
CSR[i] = &rv32imacfdcpu->
ins_CSR[i];
83 rv32imacfdcpu->
ZERO = 0;
84 rv32imacfdcpu->
RA = 0;
85 rv32imacfdcpu->
SP = 0;
86 rv32imacfdcpu->
GP = 0;
87 rv32imacfdcpu->
TP = 0;
88 rv32imacfdcpu->
T0 = 0;
89 rv32imacfdcpu->
T1 = 0;
90 rv32imacfdcpu->
T2 = 0;
91 rv32imacfdcpu->
S0 = 0;
92 rv32imacfdcpu->
S1 = 0;
93 rv32imacfdcpu->
A0 = 0;
94 rv32imacfdcpu->
A1 = 0;
95 rv32imacfdcpu->
A2 = 0;
96 rv32imacfdcpu->
A3 = 0;
97 rv32imacfdcpu->
A4 = 0;
98 rv32imacfdcpu->
A5 = 0;
99 rv32imacfdcpu->
A6 = 0;
100 rv32imacfdcpu->
A7 = 0;
101 rv32imacfdcpu->
S2 = 0;
102 rv32imacfdcpu->
S3 = 0;
103 rv32imacfdcpu->
S4 = 0;
104 rv32imacfdcpu->
S5 = 0;
105 rv32imacfdcpu->
S6 = 0;
106 rv32imacfdcpu->
S7 = 0;
107 rv32imacfdcpu->
S8 = 0;
108 rv32imacfdcpu->
S9 = 0;
109 rv32imacfdcpu->
S10 = 0;
110 rv32imacfdcpu->
S11 = 0;
111 rv32imacfdcpu->
T3 = 0;
112 rv32imacfdcpu->
T4 = 0;
113 rv32imacfdcpu->
T5 = 0;
114 rv32imacfdcpu->
T6 = 0;
115 for (
int i = 0; i < 8; ++i) {
116 rv32imacfdcpu->
FENCE[i] = 0;
118 for (
int i = 0; i < 8; ++i) {
119 rv32imacfdcpu->
RES[i] = 0;
121 rv32imacfdcpu->
PRIV = 0;
122 rv32imacfdcpu->
DPC = 0;
123 rv32imacfdcpu->
FCSR = 0;
125 rv32imacfdcpu->
MIE = 0;
126 rv32imacfdcpu->
MIP = 0;
127 for (
int i = 0; i < 32; ++i) {
128 rv32imacfdcpu->
F[i] = 0;
132 rv32imacfdcpu->
X[0] = &rv32imacfdcpu->
ZERO;
133 rv32imacfdcpu->
X[1] = &rv32imacfdcpu->
RA;
134 rv32imacfdcpu->
X[2] = &rv32imacfdcpu->
SP;
135 rv32imacfdcpu->
X[3] = &rv32imacfdcpu->
GP;
136 rv32imacfdcpu->
X[4] = &rv32imacfdcpu->
TP;
137 rv32imacfdcpu->
X[5] = &rv32imacfdcpu->
T0;
138 rv32imacfdcpu->
X[6] = &rv32imacfdcpu->
T1;
139 rv32imacfdcpu->
X[7] = &rv32imacfdcpu->
T2;
140 rv32imacfdcpu->
X[8] = &rv32imacfdcpu->
S0;
141 rv32imacfdcpu->
X[9] = &rv32imacfdcpu->
S1;
142 rv32imacfdcpu->
X[10] = &rv32imacfdcpu->
A0;
143 rv32imacfdcpu->
X[11] = &rv32imacfdcpu->
A1;
144 rv32imacfdcpu->
X[12] = &rv32imacfdcpu->
A2;
145 rv32imacfdcpu->
X[13] = &rv32imacfdcpu->
A3;
146 rv32imacfdcpu->
X[14] = &rv32imacfdcpu->
A4;
147 rv32imacfdcpu->
X[15] = &rv32imacfdcpu->
A5;
148 rv32imacfdcpu->
X[16] = &rv32imacfdcpu->
A6;
149 rv32imacfdcpu->
X[17] = &rv32imacfdcpu->
A7;
150 rv32imacfdcpu->
X[18] = &rv32imacfdcpu->
S2;
151 rv32imacfdcpu->
X[19] = &rv32imacfdcpu->
S3;
152 rv32imacfdcpu->
X[20] = &rv32imacfdcpu->
S4;
153 rv32imacfdcpu->
X[21] = &rv32imacfdcpu->
S5;
154 rv32imacfdcpu->
X[22] = &rv32imacfdcpu->
S6;
155 rv32imacfdcpu->
X[23] = &rv32imacfdcpu->
S7;
156 rv32imacfdcpu->
X[24] = &rv32imacfdcpu->
S8;
157 rv32imacfdcpu->
X[25] = &rv32imacfdcpu->
S9;
158 rv32imacfdcpu->
X[26] = &rv32imacfdcpu->
S10;
159 rv32imacfdcpu->
X[27] = &rv32imacfdcpu->
S11;
160 rv32imacfdcpu->
X[28] = &rv32imacfdcpu->
T3;
161 rv32imacfdcpu->
X[29] = &rv32imacfdcpu->
T4;
162 rv32imacfdcpu->
X[30] = &rv32imacfdcpu->
T5;
163 rv32imacfdcpu->
X[31] = &rv32imacfdcpu->
T6;
164 rv32imacfdcpu->
CSR[3] = &rv32imacfdcpu->
FCSR;
165 rv32imacfdcpu->
CSR[768] = &rv32imacfdcpu->
MSTATUS;
166 rv32imacfdcpu->
CSR[772] = &rv32imacfdcpu->
MIE;
167 rv32imacfdcpu->
CSR[836] = &rv32imacfdcpu->
MIP;
169 rv32imacfdcpu->
PRIV = 3ULL;
170 rv32imacfdcpu->
DPC = 0LL;
171 *rv32imacfdcpu->
CSR[0] = 11ULL;
172 *rv32imacfdcpu->
CSR[256] = 11ULL;
173 *rv32imacfdcpu->
CSR[768] = 11ULL;
174 *rv32imacfdcpu->
CSR[769] = 1075056941ULL;
175 *rv32imacfdcpu->
CSR[3088] = 3ULL;
176 *rv32imacfdcpu->
CSR[772] = 4294966203ULL;
177 *rv32imacfdcpu->
CSR[260] = 4294964019ULL;
178 *rv32imacfdcpu->
CSR[4] = 4294963473ULL;
214 cb.
fileglobalCode().insert(
"#include \"Arch/RV32IMACFD/RV32IMACFD.h\"\n");
215 cb.
fileglobalCode().insert(
"#include \"Arch/RV32IMACFD/RV32IMACFDFuncs.h\"\n");
const char *const reg_name[]
Generated on Thu, 24 Oct 2024 10:16:12 +0200.
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)
struct RV32IMACFD RV32IMACFD
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
Page Table Entry (PTE) defines the composition of Page Frame Number (PFN) and relavant flags.
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 Thu, 24 Oct 2024 10:16:12 +0200.
etiss_uint32 ins_CSR[4096]