T-EMU  2
The Terma Emulator
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Cpu.h
Go to the documentation of this file.
1 #ifndef TEMU_CPU_H
2 #define TEMU_CPU_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
9 
10 #include <stdint.h>
11 
12 typedef enum {
15  teCS_Idling,
20 
21 typedef enum {
32 
97 #define TEMU_ATC_FETCH 1
98 #define TEMU_ATC_READ (1 << 1)
99 #define TEMU_ATC_WRITE (1 << 2)
100 #define TEMU_ATC_USER (1 << 3)
101 #define TEMU_ATC_SUPER (1 << 4)
102 #define TEMU_ATC_HYPER (1 << 5)
103 
104 // Named struct type here keeps libclang happy
105 typedef struct temu_CpuIface {
106  void (*reset)(void *Cpu, int ResetType);
107  temu_CpuExitReason (*run)(void *Cpu, uint64_t Cycles);
108  temu_CpuExitReason (*step)(void *Cpu, uint64_t Steps);
109 
110  void __attribute__((noreturn)) (*raiseTrap)(void *Obj, int Trap);
111  void (*enterIdleMode)(void *Obj);
112  void __attribute__((noreturn)) (*exitEmuCore)(void *Cpu, temu_CpuExitReason Reason);
113 
114  uint64_t (*getFreq)(void *Cpu);
115  int64_t (*getCycles)(void *Cpu);
116  int64_t (*getSteps)(void *Cpu);
117  temu_CpuState (*getState)(void *Cpu);
118  void (*setPc)(void *Cpu, uint64_t Pc);
119  uint64_t (*getPc)(void *Cpu);
120  void (*setGpr)(void *Cpu, int Reg, uint64_t Value);
121  uint64_t (*getGpr)(void *Cpu, unsigned Reg);
122  void (*setFpr32)(void *Cpu, unsigned Reg, uint32_t Value);
123  uint32_t (*getFpr32)(void *Cpu, unsigned Reg);
124  void (*setFpr64)(void *Cpu, unsigned Reg, uint64_t Value);
125  uint64_t (*getFpr64)(void *Cpu, unsigned Reg);
126  uint64_t (*getSpr)(void *Cpu, unsigned Reg);
127  int (*getRegId)(void *Cpu, const char *RegName);
128  const char* (*getRegName)(void *Cpu, int RegId);
129  uint32_t (*assemble)(void *Cpu, const char *AsmStr);
130  char* (*disassemble)(void *Cpu, uint32_t Instr);
131  void (*enableTraps)(void *Cpu);
132  void (*disableTraps)(void *Cpu);
133  void (*invalidateAtc)(void *Obj, uint64_t Addr, uint64_t Pages,
134  uint32_t Flags);
135 
136  uint64_t (*translateAddress)(void *Cpu, uint64_t Va, uint32_t *Flags);
137 } temu_CpuIface;
138 
139 OBJSYS_OBJ_TYPE(temu_Cpu);
140 
141 #ifdef __cplusplus
142 }
143 #endif
144 
145 #endif /* ! TEMU_CPU_H */
temu_CpuState
Definition: Cpu.h:12
temu_CpuState(* getState)(void *Cpu)
Definition: Cpu.h:117
uint64_t(* getGpr)(void *Cpu, unsigned Reg)
Definition: Cpu.h:121
Exited due to interrupt (async trap)
Definition: Cpu.h:25
struct temu_CpuIface temu_CpuIface
Exited due to halting (e.g. sparc error mode)
Definition: Cpu.h:24
Other early exit reason.
Definition: Cpu.h:30
void int Trap
Definition: Cpu.h:110
temu_CpuExitReason(* step)(void *Cpu, uint64_t Steps)
Definition: Cpu.h:108
uint32_t(* getFpr32)(void *Cpu, unsigned Reg)
Definition: Cpu.h:123
#define OBJSYS_OBJ_TYPE(N)
Definition: Objsys.h:74
Exited to enter idle mode.
Definition: Cpu.h:26
void(* enableTraps)(void *Cpu)
Definition: Cpu.h:131
void(* invalidateAtc)(void *Obj, uint64_t Addr, uint64_t Pages, uint32_t Flags)
Definition: Cpu.h:133
temu_CpuExitReason
Definition: Cpu.h:21
Exited due to watchpoint write hit.
Definition: Cpu.h:29
void(* setFpr32)(void *Cpu, unsigned Reg, uint32_t Value)
Definition: Cpu.h:122
uint64_t(* getFreq)(void *Cpu)
Definition: Cpu.h:114
void(* disableTraps)(void *Cpu)
Definition: Cpu.h:132
Normal all ok CPU state.
Definition: Cpu.h:13
void(* enterIdleMode)(void *Obj)
Definition: Cpu.h:111
uint64_t(* getPc)(void *Cpu)
Definition: Cpu.h:119
uint64_t(* getSpr)(void *Cpu, unsigned Reg)
Definition: Cpu.h:126
void temu_CpuExitReason Reason
Definition: Cpu.h:112
Exited due to watchpoint read hit.
Definition: Cpu.h:28
int(* getRegId)(void *Cpu, const char *RegName)
Definition: Cpu.h:127
void __attribute__((noreturn))(*raiseTrap)(void *Obj
Exited due to breakpoint hit.
Definition: Cpu.h:27
int64_t(* getCycles)(void *Cpu)
Definition: Cpu.h:115
void(* setGpr)(void *Cpu, int Reg, uint64_t Value)
Definition: Cpu.h:120
uint32_t(* assemble)(void *Cpu, const char *AsmStr)
Definition: Cpu.h:129
Normal exit (cannot be passed to early exit)
Definition: Cpu.h:22
uint64_t(* getFpr64)(void *Cpu, unsigned Reg)
Definition: Cpu.h:125
temu_CpuExitReason(* run)(void *Cpu, uint64_t Cycles)
Definition: Cpu.h:107
void(* reset)(void *Cpu, int ResetType)
Definition: Cpu.h:106
void(* setPc)(void *Cpu, uint64_t Pc)
Definition: Cpu.h:118
void(* setFpr64)(void *Cpu, unsigned Reg, uint64_t Value)
Definition: Cpu.h:124
uint64_t(* translateAddress)(void *Cpu, uint64_t Va, uint32_t *Flags)
Definition: Cpu.h:136
int64_t(* getSteps)(void *Cpu)
Definition: Cpu.h:116
Exited due to trap (sync trap)
Definition: Cpu.h:23