TEMU  3.0
The Terma Emulator
PowerPC.h
Go to the documentation of this file.
1 //===-- temu-c/PowerPC.h - PowerPC Architecture Interfaces --------*- C++
2 //-*-===//
3 //
4 // TEMU: The Terma Emulator
5 // (c) Terma 2018
6 // Authors: Mattias Holm <maho (at) terma.com>
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef TEMU_POWERPC_H
11 #define TEMU_POWERPC_H
12 
13 #include "temu-c/Memory/Memory.h"
14 #include "temu-c/Support/Objsys.h"
15 #include <stdint.h>
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
24 typedef struct temu_PowerPCIface {
25  uint64_t (*getXER)(const void *Cpu);
26  void (*setXER)(void *Cpu, uint64_t Value);
27  uint32_t (*getCR)(const void *Cpu);
28  void (*setCR)(void *Cpu, uint32_t Value);
29  uint64_t (*getMSR)(const void *Cpu);
30  void (*setMSR)(void *Cpu, uint64_t Value);
31  uint64_t (*getReserveAddress)(const void *Obj);
32  void (*setReserveAddress)(const void *Obj, uint64_t address);
33  int (*isReservationBitSet)(const void *Obj);
34  void (*clearAddressReservation)(const void *Obj);
35  uint32_t (*getCTR)(const void *Cpu);
36  void (*setCTR)(void *Cpu, uint32_t Value);
37  uint64_t (*getLR)(const void *Cpu);
38  void (*setLR)(void *Cpu, uint64_t Value);
39  uint32_t (*getFPSCR)(const void *Cpu);
40  void (*setFPSCR)(void *Cpu, uint32_t Value);
41  void (*installEAResource)(void *Obj, unsigned RID,
42  temu_MemAccessIfaceRef Device);
44 
45 #define TEMU_POWERPC_IFACE_TYPE "temu::PowerPCIface"
46 TEMU_IFACE_REFERENCE_TYPE(temu_PowerPC);
47 
48 #ifdef __cplusplus
49 }
50 #endif
51 
52 #endif /* ! TEMU_POWERPC_H */
void(* clearAddressReservation)(const void *Obj)
Clear reserved address as used by lwarx and stwcx
Definition: PowerPC.h:34
int(* isReservationBitSet)(const void *Obj)
Check if reserved address as used by lwarx and stwcx is set.
Definition: PowerPC.h:33
uint32_t(* getCR)(const void *Cpu)
Get CR register.
Definition: PowerPC.h:27
uint32_t(* getFPSCR)(const void *Cpu)
Get FPSCR register.
Definition: PowerPC.h:39
void(* setReserveAddress)(const void *Obj, uint64_t address)
Set reserved address as used by lwarx and stwcx
Definition: PowerPC.h:32
uint64_t(* getMSR)(const void *Cpu)
Get MSR register.
Definition: PowerPC.h:29
TEMU_IFACE_REFERENCE_TYPE(temu_PowerPC)
void(* setCR)(void *Cpu, uint32_t Value)
Set XER register.
Definition: PowerPC.h:28
uint64_t(* getLR)(const void *Cpu)
Get LR register.
Definition: PowerPC.h:37
void(* setCTR)(void *Cpu, uint32_t Value)
Set CTR register.
Definition: PowerPC.h:36
uint64_t(* getXER)(const void *Cpu)
Get XER register.
Definition: PowerPC.h:25
void(* setFPSCR)(void *Cpu, uint32_t Value)
Set FPSCR register.
Definition: PowerPC.h:40
void(* installEAResource)(void *Obj, unsigned RID, temu_MemAccessIfaceRef Device)
Install EA resource.
Definition: PowerPC.h:41
void(* setLR)(void *Cpu, uint64_t Value)
Set LR register.
Definition: PowerPC.h:38
Definition: PowerPC.h:24
struct temu_PowerPCIface temu_PowerPCIface
void(* setXER)(void *Cpu, uint64_t Value)
Set XER register.
Definition: PowerPC.h:26
uint64_t(* getReserveAddress)(const void *Obj)
Get reserved address as used by lwarx and stwcx
Definition: PowerPC.h:31
void(* setMSR)(void *Cpu, uint64_t Value)
Set MSR register.
Definition: PowerPC.h:30
uint32_t(* getCTR)(const void *Cpu)
Get CTR register.
Definition: PowerPC.h:35