40 #define RV64IMACFD_DEBUG_CALL 0
41 using namespace etiss ;
46 headers_.insert(
"Arch/RV64IMACFD/RV64IMACFD.h");
74 for (
int i = 0; i < 32; ++i) {
75 rv64imacfdcpu->
ins_X[i] = 0;
76 rv64imacfdcpu->
X[i] = &rv64imacfdcpu->
ins_X[i];
78 for (
int i = 0; i < 4096; ++i) {
80 rv64imacfdcpu->
CSR[i] = &rv64imacfdcpu->
ins_CSR[i];
83 rv64imacfdcpu->
ZERO = 0;
84 rv64imacfdcpu->
RA = 0;
85 rv64imacfdcpu->
SP = 0;
86 rv64imacfdcpu->
GP = 0;
87 rv64imacfdcpu->
TP = 0;
88 rv64imacfdcpu->
T0 = 0;
89 rv64imacfdcpu->
T1 = 0;
90 rv64imacfdcpu->
T2 = 0;
91 rv64imacfdcpu->
S0 = 0;
92 rv64imacfdcpu->
S1 = 0;
93 rv64imacfdcpu->
A0 = 0;
94 rv64imacfdcpu->
A1 = 0;
95 rv64imacfdcpu->
A2 = 0;
96 rv64imacfdcpu->
A3 = 0;
97 rv64imacfdcpu->
A4 = 0;
98 rv64imacfdcpu->
A5 = 0;
99 rv64imacfdcpu->
A6 = 0;
100 rv64imacfdcpu->
A7 = 0;
101 rv64imacfdcpu->
S2 = 0;
102 rv64imacfdcpu->
S3 = 0;
103 rv64imacfdcpu->
S4 = 0;
104 rv64imacfdcpu->
S5 = 0;
105 rv64imacfdcpu->
S6 = 0;
106 rv64imacfdcpu->
S7 = 0;
107 rv64imacfdcpu->
S8 = 0;
108 rv64imacfdcpu->
S9 = 0;
109 rv64imacfdcpu->
S10 = 0;
110 rv64imacfdcpu->
S11 = 0;
111 rv64imacfdcpu->
T3 = 0;
112 rv64imacfdcpu->
T4 = 0;
113 rv64imacfdcpu->
T5 = 0;
114 rv64imacfdcpu->
T6 = 0;
115 for (
int i = 0; i < 8; ++i) {
116 rv64imacfdcpu->
FENCE[i] = 0;
118 for (
int i = 0; i < 8; ++i) {
119 rv64imacfdcpu->
RES[i] = 0;
121 rv64imacfdcpu->
PRIV = 0;
122 rv64imacfdcpu->
DPC = 0;
123 rv64imacfdcpu->
FCSR = 0;
125 rv64imacfdcpu->
MIE = 0;
126 rv64imacfdcpu->
MIP = 0;
127 for (
int i = 0; i < 32; ++i) {
128 rv64imacfdcpu->
F[i] = 0;
132 rv64imacfdcpu->
X[0] = &rv64imacfdcpu->
ZERO;
133 rv64imacfdcpu->
X[1] = &rv64imacfdcpu->
RA;
134 rv64imacfdcpu->
X[2] = &rv64imacfdcpu->
SP;
135 rv64imacfdcpu->
X[3] = &rv64imacfdcpu->
GP;
136 rv64imacfdcpu->
X[4] = &rv64imacfdcpu->
TP;
137 rv64imacfdcpu->
X[5] = &rv64imacfdcpu->
T0;
138 rv64imacfdcpu->
X[6] = &rv64imacfdcpu->
T1;
139 rv64imacfdcpu->
X[7] = &rv64imacfdcpu->
T2;
140 rv64imacfdcpu->
X[8] = &rv64imacfdcpu->
S0;
141 rv64imacfdcpu->
X[9] = &rv64imacfdcpu->
S1;
142 rv64imacfdcpu->
X[10] = &rv64imacfdcpu->
A0;
143 rv64imacfdcpu->
X[11] = &rv64imacfdcpu->
A1;
144 rv64imacfdcpu->
X[12] = &rv64imacfdcpu->
A2;
145 rv64imacfdcpu->
X[13] = &rv64imacfdcpu->
A3;
146 rv64imacfdcpu->
X[14] = &rv64imacfdcpu->
A4;
147 rv64imacfdcpu->
X[15] = &rv64imacfdcpu->
A5;
148 rv64imacfdcpu->
X[16] = &rv64imacfdcpu->
A6;
149 rv64imacfdcpu->
X[17] = &rv64imacfdcpu->
A7;
150 rv64imacfdcpu->
X[18] = &rv64imacfdcpu->
S2;
151 rv64imacfdcpu->
X[19] = &rv64imacfdcpu->
S3;
152 rv64imacfdcpu->
X[20] = &rv64imacfdcpu->
S4;
153 rv64imacfdcpu->
X[21] = &rv64imacfdcpu->
S5;
154 rv64imacfdcpu->
X[22] = &rv64imacfdcpu->
S6;
155 rv64imacfdcpu->
X[23] = &rv64imacfdcpu->
S7;
156 rv64imacfdcpu->
X[24] = &rv64imacfdcpu->
S8;
157 rv64imacfdcpu->
X[25] = &rv64imacfdcpu->
S9;
158 rv64imacfdcpu->
X[26] = &rv64imacfdcpu->
S10;
159 rv64imacfdcpu->
X[27] = &rv64imacfdcpu->
S11;
160 rv64imacfdcpu->
X[28] = &rv64imacfdcpu->
T3;
161 rv64imacfdcpu->
X[29] = &rv64imacfdcpu->
T4;
162 rv64imacfdcpu->
X[30] = &rv64imacfdcpu->
T5;
163 rv64imacfdcpu->
X[31] = &rv64imacfdcpu->
T6;
164 rv64imacfdcpu->
CSR[3] = &rv64imacfdcpu->
FCSR;
165 rv64imacfdcpu->
CSR[768] = &rv64imacfdcpu->
MSTATUS;
166 rv64imacfdcpu->
CSR[772] = &rv64imacfdcpu->
MIE;
167 rv64imacfdcpu->
CSR[836] = &rv64imacfdcpu->
MIP;
169 rv64imacfdcpu->
PRIV = 3ULL;
170 rv64imacfdcpu->
DPC = 0LL;
171 *rv64imacfdcpu->
CSR[0] = 11ULL;
172 *rv64imacfdcpu->
CSR[256] = 11ULL;
173 *rv64imacfdcpu->
CSR[768] = 11ULL;
174 *rv64imacfdcpu->
CSR[769] = 9223372036856090925ULL;
175 *rv64imacfdcpu->
CSR[3088] = 3ULL;
176 *rv64imacfdcpu->
CSR[772] = 4294966203ULL;
177 *rv64imacfdcpu->
CSR[260] = 4294964019ULL;
178 *rv64imacfdcpu->
CSR[4] = 4294963473ULL;
214 cb.
fileglobalCode().insert(
"#include \"Arch/RV64IMACFD/RV64IMACFD.h\"\n");
215 cb.
fileglobalCode().insert(
"#include \"Arch/RV64IMACFD/RV64IMACFDFuncs.h\"\n");
const char *const reg_name[]
Generated on Thu, 24 Oct 2024 10:16:12 +0200.
etiss::instr::InstructionClass ISA16_RV64IMACFDClass(1, "ISA16_RV64IMACFD", 16, ISA16_RV64IMACFD)
etiss::instr::InstructionCollection RV64IMACFDISA("RV64IMACFDISA", ISA16_RV64IMACFDClass, ISA32_RV64IMACFDClass)
etiss::instr::InstructionGroup ISA32_RV64IMACFD("ISA32_RV64IMACFD", 32)
etiss::instr::InstructionClass ISA32_RV64IMACFDClass(1, "ISA32_RV64IMACFD", 32, ISA32_RV64IMACFD)
etiss::instr::InstructionGroup ISA16_RV64IMACFD("ISA16_RV64IMACFD", 16)
__DEVICE__ void * memset(void *__a, int __b, size_t __c)
struct RV64IMACFD RV64IMACFD
std::set< std::string > listenerSupportedRegisters_
virtual void deleteCPU(ETISS_CPU *)
delete cpu structure
virtual unsigned getInstructionSizeInBytes()
virtual unsigned getMaximumInstructionSizeInBytes()
RV64IMACFDGDBCore gdbcore_
RV64IMACFDArch(unsigned int)
virtual const std::set< std::string > & getHeaders() const
required headers (RV64IMACFD.h)
virtual ETISS_CPU * newCPU()
allocate new cpu structure
virtual void resetCPU(ETISS_CPU *cpu, etiss::uint64 *startpointer)
reset cpu (structure)
virtual void initCodeBlock(etiss::CodeBlock &cb) const
called before instructions are translated for the code block
virtual etiss::plugin::gdb::GDBCore & getGDBCore()
get the GDBcore for RV64IMACFD architecture
std::set< std::string > headers_
virtual const std::set< std::string > & getListenerSupportedRegisters()
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_uint64 ins_CSR[4096]