45 #define TEMU_ATC_FETCH 1 46 #define TEMU_ATC_READ (1 << 1) 47 #define TEMU_ATC_WRITE (1 << 2) 48 #define TEMU_ATC_USER (1 << 3) 49 #define TEMU_ATC_SUPER (1 << 4) 50 #define TEMU_ATC_HYPER (1 << 5) 166 void (*
reset)(
void *Cpu,
int ResetType);
180 void (*
setPc)(
void *Cpu, uint64_t Pc);
182 void (*
setGpr)(
void *Cpu,
int Reg, uint64_t Value);
183 uint64_t (*
getGpr)(
void *Cpu,
unsigned Reg);
184 void (*
setFpr32)(
void *Cpu,
unsigned Reg, uint32_t Value);
186 void (*
setFpr64)(
void *Cpu,
unsigned Reg, uint64_t Value);
188 void (*
setSpr)(
void *Cpu,
unsigned Reg, uint64_t Value);
189 uint64_t (*
getSpr)(
void *Cpu,
unsigned Reg);
191 const char* (*getRegName)(
void *Cpu,
int RegId);
192 uint32_t (*
assemble)(
void *Cpu,
const char *AsmStr);
193 char* (*disassemble)(
void *Cpu, uint32_t Instr);
210 void* (*getMachine)(
void *Cpu);
213 const char* (*getTrapName)(
void *Cpu,
int Trap);
221 void* (*translateIRAddress)(
void *Obj, uint64_t Va);
234 #define TEMU_CPU_IFACE_TYPE "CpuIface" 249 #define TEMU_INSTR_BRANCH (1 << 0) 250 #define TEMU_INSTR_INDIRECT_BRANCH (1 << 1) 251 #define TEMU_INSTR_LOAD (1 << 2) 252 #define TEMU_INSTR_STORE (1 << 3) 253 #define TEMU_INSTR_INTEGER (1 << 4) 254 #define TEMU_INSTR_FLOAT (1 << 5) 255 #define TEMU_INSTR_ARITHMETIC (1 << 6) 256 #define TEMU_INSTR_ANNULLED (1 << 7) 257 #define TEMU_INSTR_UNCOND (1 << 8) 258 #define TEMU_INSTR_UNCOND_NEVER (1 << 9) 259 #define TEMU_INSTR_ON_PAGE (1 << 10) 260 #define TEMU_INSTR_MODE_SWITCH (1 << 11) 261 #define TEMU_INSTR_ILLEGAL (1 << 12) 264 void (*branchTargetCounterOverflow)(
void *Obj, uint64_t Address,
int Taken);
265 void (*blockCounterOverflow)(
void *Obj, uint64_t Address);
266 void (*wrotePage)(
void *Obj, uint64_t Va, uint64_t Pa);
267 void* (*getRawRuntime)(
void *Obj);
269 #define TEMU_TARGET_EXEC_IFACE_TYPE "TargetExecutionIface" 272 #define TEMU_STICKY_DO_NOT_EXIT_AT_HALT 1 273 #define TEMU_STICKY_PROFILE_MODE 2 274 #define TEMU_STICKY_DISABLE_IDLE (1 << 2) 278 void (*setResetAddress)(
void *Obj, uint64_t Address);
280 #define TEMU_DYNAMIC_RESET_ADDRESS_IFACE_TYPE "temu::DynamicResetAddressIface" Exited due to watchpoint read hit.
Definition: Cpu.h:38
int(* getRegId)(void *Cpu, const char *RegName)
Definition: Cpu.h:190
uint32_t(* getFpr32)(void *Cpu, unsigned Reg)
Definition: Cpu.h:185
void(* setPowerState)(void *Cpu, temu_PowerState Ps)
Definition: Cpu.h:202
int64_t(* getCycles)(void *Cpu)
Definition: Cpu.h:177
uint32_t OldMode
Definition: Cpu.h:244
Emulator panic (e.g. illegal mode transition)
Definition: Cpu.h:41
unsigned GPRCount
Definition: Cpu.h:70
uint64_t(* getGpr)(void *Cpu, unsigned Reg)
Definition: Cpu.h:183
unsigned NumInstructionSets
Definition: Cpu.h:76
void(* setGpr)(void *Cpu, int Reg, uint64_t Value)
Definition: Cpu.h:182
temu_CpuState
Definition: Cpu.h:21
const char * ModelName
Definition: Cpu.h:63
void __attribute__((noreturn))(*raiseTrap)(void *Obj
Other early exit reason.
Definition: Cpu.h:40
Exited due to watchpoint write hit.
Definition: Cpu.h:39
void(* setFpr64)(void *Cpu, unsigned Reg, uint64_t Value)
Definition: Cpu.h:186
void temu_CpuExitReason Reason
Definition: Cpu.h:174
uint64_t(* getFreq)(void *Cpu)
Definition: Cpu.h:176
unsigned VATypeSize
Definition: Cpu.h:67
unsigned PASize
Definition: Cpu.h:66
uint64_t(* translateAddress)(void *Cpu, uint64_t Va, uint32_t *Flags)
Definition: Cpu.h:199
temu_PowerState
Used to indicate whether a model is powered on.
Definition: Power.h:23
unsigned PATypeSize
Definition: Cpu.h:68
void(* setPc)(void *Cpu, uint64_t Pc)
Definition: Cpu.h:180
void(* disableErrorModeEvents)(void *Cpu)
Definition: Cpu.h:208
uint32_t NewMode
Definition: Cpu.h:245
uint64_t PC
Program counter when trap occurred.
Definition: Cpu.h:239
void(* disableTraps)(void *Cpu)
Definition: Cpu.h:195
void(* enableTraps)(void *Cpu)
Definition: Cpu.h:194
int(* wakeUp)(void *Cpu)
Definition: Cpu.h:217
int64_t(* getSteps)(void *Cpu)
Definition: Cpu.h:178
void(* enableModeSwitchEvents)(void *Obj)
Definition: Cpu.h:227
Normal all ok CPU state.
Definition: Cpu.h:22
Exited due to breakpoint hit.
Definition: Cpu.h:37
temu_CpuState(* getState)(void *Cpu)
Definition: Cpu.h:179
void(* disableProfiling)(void *Obj)
Definition: Cpu.h:231
void(* enableTrapEvents)(void *Cpu)
Definition: Cpu.h:204
Exited due to halting (e.g. sparc error mode)
Definition: Cpu.h:34
uint64_t nPC
Only valid for targets with delay slots.
Definition: Cpu.h:240
temu_Endian
Definition: Cpu.h:54
temu_CpuExitReason(* run)(void *Cpu, uint64_t Cycles)
Definition: Cpu.h:167
void(* enterIdleMode)(void *Obj)
Definition: Cpu.h:173
void int Trap
Definition: Cpu.h:172
uint32_t(* assemble)(void *Cpu, const char *AsmStr)
Definition: Cpu.h:192
void(* forceEarlyExit)(void *Cpu)
Definition: Cpu.h:220
void(* reset)(void *Cpu, int ResetType)
Definition: Cpu.h:166
temu_CpuExitReason
Definition: Cpu.h:31
temu_Endian DataEndianess
Definition: Cpu.h:74
uint32_t TrapId
Definition: Cpu.h:238
void(* setSpr)(void *Cpu, unsigned Reg, uint64_t Value)
Definition: Cpu.h:188
void(* enableProfiling)(void *Obj)
Definition: Cpu.h:230
temu_CpuExitReason(* runUntil)(void *Cpu, uint64_t Cycles)
Definition: Cpu.h:168
void(* raiseTrapNoJmp)(void *Cpu, int Trap)
Definition: Cpu.h:211
const char * ArchName
Definition: Cpu.h:62
void(* enableErrorModeEvents)(void *Cpu)
Definition: Cpu.h:207
Normal exit (cannot be passed to early exit)
Definition: Cpu.h:32
uint64_t(* getSpr)(void *Cpu, unsigned Reg)
Definition: Cpu.h:189
void(* flushProfileCaches)(void *Obj)
Definition: Cpu.h:232
TEMU_IFACE_REFERENCE_TYPE(temu_Cpu)
Exited due to trap (sync trap)
Definition: Cpu.h:33
unsigned FPRCount
Definition: Cpu.h:71
struct temu_CpuIface temu_CpuIface
void(* invalidateAtc)(void *Obj, uint64_t Addr, uint64_t Pages, uint32_t Flags)
Definition: Cpu.h:196
void(* setFpr32)(void *Cpu, unsigned Reg, uint32_t Value)
Definition: Cpu.h:184
temu_Endian InstructionEndianess
Definition: Cpu.h:73
temu_CpuExitReason(* step)(void *Cpu, uint64_t Steps)
Definition: Cpu.h:169
unsigned VASize
Definition: Cpu.h:65
void(* disableTrapEvents)(void *Cpu)
Definition: Cpu.h:205
temu_PowerState(* getPowerState)(void *Cpu)
Definition: Cpu.h:201
temu_CpuExitReason(* stepUntil)(void *Cpu, uint64_t Steps, uint64_t Cycles)
Definition: Cpu.h:170
void(* disableModeSwitchEvents)(void *Obj)
Definition: Cpu.h:228
uint64_t(* getFpr64)(void *Cpu, unsigned Reg)
Definition: Cpu.h:187
uint64_t(* getPc)(void *Cpu)
Definition: Cpu.h:181