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 //===-- temu-c/Cpu.h - Micro-processor functions ----------------*- C++ -*-===//
2 //
3 // T-EMU: The Terma Emulator
4 // (c) Terma 2015
5 // Authors: Mattias Holm <maho (at) terma.com>
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef TEMU_SUPPORT_CPU
10 #define TEMU_SUPPORT_CPU
11 
35 #include <stdint.h>
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
50 uint64_t temu_cpuGetFreq(void *Cpu);
51 
66 void temu_cpuSetPc(void *Cpu, uint64_t Pc);
67 
79 uint64_t temu_cpuGetPc(void *Cpu);
80 
95 void temu_cpuReset(void *Cpu, int ResetType);
96 
114 uint64_t temu_cpuRun(void *Cpu, uint64_t Cycles);
115 
135 uint64_t temu_cpuStep(void *Cpu, uint64_t Steps);
136 
137 
138 uint64_t temu_cpuGetReg(void *Cpu, unsigned Reg);
139 void temu_cpuSetReg(void *Cpu, unsigned Reg, uint64_t Value);
140 
141 float temu_cpuGetFpr32(void *Cpu, unsigned Reg);
142 uint32_t temu_cpuGetFpr32Bits(void *Cpu, unsigned Reg);
143 void temu_cpuSetFpr32(void *Cpu, unsigned Reg, float Value);
144 void temu_cpuSetFpr32Bits(void *Cpu, unsigned Reg, uint32_t Value);
145 
146 double temu_cpuGetFpr64(void *Cpu, unsigned Reg);
147 uint64_t temu_cpuGetFpr64Bits(void *Cpu, unsigned Reg);
148 void temu_cpuSetFpr64(void *Cpu, unsigned Reg, double Value);
149 void temu_cpuSetFpr64Bits(void *Cpu, unsigned Reg, uint64_t Value);
150 
151 void temu_cpuEnableTraps(void *Cpu);
152 void temu_cpuDisableTraps(void *Cpu);
153 
154 /* Sparc specific functions */
155 
156 typedef void (*temu_SparcAsrHandler)(void *Cpu, uint32_t Instr);
157 //typedef void (*temu_SparcAsiHandler)(void *Cpu, temu_MemTransaction *MT);
158 
159 int temu_sparcGetWindowCount(void *Cpu);
160 uint32_t temu_sparcGetWindowedReg(void *Cpu, int Window, unsigned Reg);
161 void temu_sparcSetWindowedReg(void *Cpu, int Window, unsigned Reg, uint32_t Value);
162 
163 void temu_sparcSetY(void *Cpu, uint64_t Value);
164 uint64_t temu_sparcGetY(void *Cpu);
165 
166 void temu_sparcSetAsr(void *Cpu, unsigned Reg, uint64_t Value);
167 uint64_t temu_sparcGetAsr(void *Cpu, unsigned Reg);
168 void temu_sparcSetAsrWriter(void *Cpu, unsigned Asr, temu_SparcAsrHandler Handler);
169 void temu_sparcSetAsrReader(void *Cpu, unsigned Asr, temu_SparcAsrHandler Handler);
170 
171 void temu_sparcSetPsr(void *Cpu, uint32_t Value);
172 uint32_t temu_sparcGetPsr(void *Cpu);
173 
174 void temu_sparcSetTbr(void *Cpu, uint32_t Value);
175 uint32_t temu_sparcGetTbr(void *Cpu);
176 
177 void temu_sparcSetWim(void *Cpu, uint32_t Value);
178 uint32_t temu_sparcGetWim(void *Cpu);
179 
180 void temu_sparcSetNPc(void *Cpu, uint32_t Value);
181 uint32_t temu_sparcGetNPc(void *Cpu);
182 
183 // Machine functions
184 
185 
201 void temu_machineReset(void *Machine, int ResetType);
202 
203 
221 uint64_t temu_machineRun(void *Machine, uint64_t NanoSecs);
222 
259 typedef void (*temu_SafeCb)(void*);
260 void temu_postCallback(void *Obj, temu_SafeCb Cb, void *Arg);
261 
262 #ifdef __cplusplus
263 }
264 #endif
265 
266 #endif /* ! TEMU_SUPPORT_CPU */
void temu_cpuSetFpr32Bits(void *Cpu, unsigned Reg, uint32_t Value)
void temu_sparcSetY(void *Cpu, uint64_t Value)
uint64_t temu_sparcGetAsr(void *Cpu, unsigned Reg)
void temu_cpuDisableTraps(void *Cpu)
void temu_machineReset(void *Machine, int ResetType)
Reset the Machine.
double temu_cpuGetFpr64(void *Cpu, unsigned Reg)
void temu_sparcSetTbr(void *Cpu, uint32_t Value)
uint32_t temu_sparcGetWindowedReg(void *Cpu, int Window, unsigned Reg)
uint64_t temu_cpuGetFreq(void *Cpu)
Get the clock frequency for the CPU.
uint64_t temu_cpuStep(void *Cpu, uint64_t Steps)
Run the processor for a number of steps.
uint64_t temu_machineRun(void *Machine, uint64_t NanoSecs)
Run the machine for a number of nanoseconds.
uint32_t temu_sparcGetPsr(void *Cpu)
void temu_sparcSetNPc(void *Cpu, uint32_t Value)
void temu_sparcSetAsrReader(void *Cpu, unsigned Asr, temu_SparcAsrHandler Handler)
uint64_t temu_cpuGetFpr64Bits(void *Cpu, unsigned Reg)
void temu_cpuSetFpr32(void *Cpu, unsigned Reg, float Value)
void temu_cpuEnableTraps(void *Cpu)
uint64_t temu_cpuGetReg(void *Cpu, unsigned Reg)
uint32_t temu_sparcGetNPc(void *Cpu)
void temu_cpuSetFpr64(void *Cpu, unsigned Reg, double Value)
void temu_sparcSetPsr(void *Cpu, uint32_t Value)
void(* temu_SparcAsrHandler)(void *Cpu, uint32_t Instr)
Definition: Cpu.h:156
void temu_cpuReset(void *Cpu, int ResetType)
Reset the processor.
uint64_t temu_sparcGetY(void *Cpu)
void temu_postCallback(void *Obj, temu_SafeCb Cb, void *Arg)
uint32_t temu_cpuGetFpr32Bits(void *Cpu, unsigned Reg)
void(* temu_SafeCb)(void *)
Definition: Cpu.h:259
uint32_t temu_sparcGetTbr(void *Cpu)
uint64_t temu_cpuGetPc(void *Cpu)
Get the program counter.
float temu_cpuGetFpr32(void *Cpu, unsigned Reg)
void temu_sparcSetWindowedReg(void *Cpu, int Window, unsigned Reg, uint32_t Value)
void temu_cpuSetFpr64Bits(void *Cpu, unsigned Reg, uint64_t Value)
uint64_t temu_cpuRun(void *Cpu, uint64_t Cycles)
Run the processor for a number of cycles.
void temu_cpuSetPc(void *Cpu, uint64_t Pc)
Set the program counter.
void temu_sparcSetWim(void *Cpu, uint32_t Value)
void temu_cpuSetReg(void *Cpu, unsigned Reg, uint64_t Value)
int temu_sparcGetWindowCount(void *Cpu)
void temu_sparcSetAsrWriter(void *Cpu, unsigned Asr, temu_SparcAsrHandler Handler)
uint32_t temu_sparcGetWim(void *Cpu)
void temu_sparcSetAsr(void *Cpu, unsigned Reg, uint64_t Value)