00001 #ifndef TEMU_SUPPORT_CPU
00002 #define TEMU_SUPPORT_CPU
00003
00027 #include <stdint.h>
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00042 uint64_t temu_cpuGetFreq(void *Cpu);
00043
00058 void temu_cpuSetPc(void *Cpu, uint64_t Pc);
00059
00071 uint64_t temu_cpuGetPc(void *Cpu);
00072
00087 void temu_cpuReset(void *Cpu, int ResetType);
00088
00106 uint64_t temu_cpuRun(void *Cpu, uint64_t Cycles);
00107
00127 uint64_t temu_cpuStep(void *Cpu, uint64_t Steps);
00128
00129
00130 uint64_t temu_cpuGetReg(void *Cpu, unsigned Reg);
00131 void temu_cpuSetReg(void *Cpu, unsigned Reg, uint64_t Value);
00132
00133 float temu_cpuGetFpr32(void *Cpu, unsigned Reg);
00134 uint32_t temu_cpuGetFpr32Bits(void *Cpu, unsigned Reg);
00135 void temu_cpuSetFpr32(void *Cpu, unsigned Reg, float Value);
00136 void temu_cpuSetFpr32Bits(void *Cpu, unsigned Reg, uint32_t Value);
00137
00138 double temu_cpuGetFpr64(void *Cpu, unsigned Reg);
00139 uint64_t temu_cpuGetFpr64Bits(void *Cpu, unsigned Reg);
00140 void temu_cpuSetFpr64(void *Cpu, unsigned Reg, double Value);
00141 void temu_cpuSetFpr64Bits(void *Cpu, unsigned Reg, uint64_t Value);
00142
00143 void temu_cpuEnableTraps(void *Cpu);
00144 void temu_cpuDisableTraps(void *Cpu);
00145
00146
00147
00148 typedef void (*temu_SparcAsrHandler)(void *Cpu, uint32_t Instr);
00149
00150
00151 int temu_sparcGetWindowCount(void *Cpu);
00152 uint32_t temu_sparcGetWindowedReg(void *Cpu, int Window, unsigned Reg);
00153 void temu_sparcSetWindowedReg(void *Cpu, int Window, unsigned Reg, uint32_t Value);
00154
00155 void temu_sparcSetY(void *Cpu, uint64_t Value);
00156 uint64_t temu_sparcGetY(void *Cpu);
00157
00158 void temu_sparcSetAsr(void *Cpu, unsigned Reg, uint64_t Value);
00159 uint64_t temu_sparcGetAsr(void *Cpu, unsigned Reg);
00160 void temu_sparcSetAsrWriter(void *Cpu, unsigned Asr, temu_SparcAsrHandler Handler);
00161 void temu_sparcSetAsrReader(void *Cpu, unsigned Asr, temu_SparcAsrHandler Handler);
00162
00163 void temu_sparcSetPsr(void *Cpu, uint32_t Value);
00164 uint32_t temu_sparcGetPsr(void *Cpu);
00165
00166 void temu_sparcSetTbr(void *Cpu, uint32_t Value);
00167 uint32_t temu_sparcGetTbr(void *Cpu);
00168
00169 void temu_sparcSetWim(void *Cpu, uint32_t Value);
00170 uint32_t temu_sparcGetWim(void *Cpu);
00171
00172 void temu_sparcSetNPc(void *Cpu, uint32_t Value);
00173 uint32_t temu_sparcGetNPc(void *Cpu);
00174
00175 #ifdef __cplusplus
00176 }
00177 #endif
00178
00179 #endif