TEMU  2
The Terma Emulator
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
Sparc.h
Go to the documentation of this file.
1 //===-- temu-c/Sparc.h - SPARCv8 Architecture Interfaces --------*- 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_SPARC_H
10 #define TEMU_SPARC_H
11 
12 #include "temu-c/Support/Objsys.h"
13 #include "temu-c/Memory/Memory.h"
14 #include <stdint.h>
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 typedef void (*temu_SparcAsrHandler)(void *Cpu, uint32_t Instr);
21 typedef void (*temu_SparcAsiHandler)(void *Cpu, temu_MemTransaction *MT);
22 
23 /*
24  \brief Interface for SPARC specific functionality
25  */
26 typedef struct temu_SparcV8Iface {
27  unsigned (*getWindowCount)(const void *Cpu);
28  uint32_t (*getWindowedReg)(const void *Cpu, int Window, unsigned Reg);
29  void (*setWindowedReg)(void *Cpu, int Window, unsigned Reg, uint32_t Value);
30  void (*setAsiHandler)(void *Cpu, unsigned Asi, int IsWriteAsi,
31  temu_SparcAsiHandler AsiHandler);
32 
33  // Should normally exist as property as well
34  uint32_t (*getAsr)(const void *Cpu, unsigned Asr);
35  void (*setAsr)(void *Cpu, unsigned Asr, uint32_t Value);
36  void (*setAsrReadHandler)(void *Cpu, unsigned Asr, temu_SparcAsrHandler AsrHandler);
37  void (*setAsrWriteHandler)(void *Cpu, unsigned Asr, temu_SparcAsrHandler AsrHandler);
38 
39  // Should go through property instead
40  uint32_t (*getPsr)(const void *Cpu);
41  void (*setPsr)(void *Cpu, uint32_t Value);
42  uint32_t (*getTbr)(const void *Cpu);
43  void (*setTbr)(void *Cpu, uint32_t Value);
44  uint32_t (*getWim)(const void *Cpu);
45  void (*setWim)(void *Cpu, uint32_t Value);
46 
47  uint32_t (*getNPc)(const void *Cpu);
48  void (*setNPc)(void *Cpu, uint32_t Value);
49 
50  uint32_t (*getFsr)(const void *Cpu);
51  void (*setFsr)(void *Cpu, uint32_t Value);
52 
53  uint32_t (*getCsr)(const void *Cpu);
54  void (*setCsr)(void *Cpu, uint32_t Value);
55 
57 #define TEMU_SPARCV8_IFACE_TYPE "SparcIface"
58 TEMU_IFACE_REFERENCE_TYPE(temu_SparcV8);
59 
60 #ifdef __cplusplus
61 }
62 #endif
63 
64 #endif /* ! TEMU_SPARC_H */
uint32_t(* getNPc)(const void *Cpu)
Definition: Sparc.h:47
void(* setFsr)(void *Cpu, uint32_t Value)
Definition: Sparc.h:51
uint32_t(* getTbr)(const void *Cpu)
Definition: Sparc.h:42
void(* setAsr)(void *Cpu, unsigned Asr, uint32_t Value)
Definition: Sparc.h:35
void(* setPsr)(void *Cpu, uint32_t Value)
Definition: Sparc.h:41
uint32_t(* getCsr)(const void *Cpu)
Definition: Sparc.h:53
void(* temu_SparcAsrHandler)(void *Cpu, uint32_t Instr)
Definition: Cpu.h:261
struct temu_SparcV8Iface temu_SparcV8Iface
#define TEMU_IFACE_REFERENCE_TYPE(N)
Definition: Objsys.h:129
unsigned(* getWindowCount)(const void *Cpu)
Definition: Sparc.h:27
void(* setTbr)(void *Cpu, uint32_t Value)
Definition: Sparc.h:43
void(* setWim)(void *Cpu, uint32_t Value)
Definition: Sparc.h:45
void(* setAsiHandler)(void *Cpu, unsigned Asi, int IsWriteAsi, temu_SparcAsiHandler AsiHandler)
Definition: Sparc.h:30
void(* setWindowedReg)(void *Cpu, int Window, unsigned Reg, uint32_t Value)
Definition: Sparc.h:29
void(* temu_SparcAsiHandler)(void *Cpu, temu_MemTransaction *MT)
Definition: Sparc.h:21
void(* setAsrWriteHandler)(void *Cpu, unsigned Asr, temu_SparcAsrHandler AsrHandler)
Definition: Sparc.h:37
uint32_t(* getPsr)(const void *Cpu)
Definition: Sparc.h:40
uint32_t(* getFsr)(const void *Cpu)
Definition: Sparc.h:50
void(* setNPc)(void *Cpu, uint32_t Value)
Definition: Sparc.h:48
uint32_t(* getAsr)(const void *Cpu, unsigned Asr)
Definition: Sparc.h:34
uint32_t(* getWindowedReg)(const void *Cpu, int Window, unsigned Reg)
Definition: Sparc.h:28
void(* setCsr)(void *Cpu, uint32_t Value)
Definition: Sparc.h:54
void(* setAsrReadHandler)(void *Cpu, unsigned Asr, temu_SparcAsrHandler AsrHandler)
Definition: Sparc.h:36
uint32_t(* getWim)(const void *Cpu)
Definition: Sparc.h:44