1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef QEMU_SUPERH_CPU_QOM_H
21#define QEMU_SUPERH_CPU_QOM_H
22
23#include "qom/cpu.h"
24
25#define TYPE_SUPERH_CPU "superh-cpu"
26
27#define TYPE_SH7750R_CPU "sh7750r-" TYPE_SUPERH_CPU
28#define TYPE_SH7751R_CPU "sh7751r-" TYPE_SUPERH_CPU
29#define TYPE_SH7785_CPU "sh7785-" TYPE_SUPERH_CPU
30
31#define SUPERH_CPU_CLASS(klass) \
32 OBJECT_CLASS_CHECK(SuperHCPUClass, (klass), TYPE_SUPERH_CPU)
33#define SUPERH_CPU(obj) \
34 OBJECT_CHECK(SuperHCPU, (obj), TYPE_SUPERH_CPU)
35#define SUPERH_CPU_GET_CLASS(obj) \
36 OBJECT_GET_CLASS(SuperHCPUClass, (obj), TYPE_SUPERH_CPU)
37
38
39
40
41
42
43
44
45
46
47
48
49typedef struct SuperHCPUClass {
50
51 CPUClass parent_class;
52
53
54 DeviceRealize parent_realize;
55 void (*parent_reset)(CPUState *cpu);
56
57 const char *name;
58 uint32_t pvr;
59 uint32_t prr;
60 uint32_t cvr;
61} SuperHCPUClass;
62
63
64
65
66
67
68
69typedef struct SuperHCPU {
70
71 CPUState parent_obj;
72
73
74 CPUSH4State env;
75} SuperHCPU;
76
77static inline SuperHCPU *sh_env_get_cpu(CPUSH4State *env)
78{
79 return container_of(env, SuperHCPU, env);
80}
81
82#define ENV_GET_CPU(e) CPU(sh_env_get_cpu(e))
83
84#define ENV_OFFSET offsetof(SuperHCPU, env)
85
86void superh_cpu_do_interrupt(CPUState *cpu);
87void superh_cpu_dump_state(CPUState *cpu, FILE *f,
88 fprintf_function cpu_fprintf, int flags);
89hwaddr superh_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
90int superh_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
91int superh_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
92
93#endif
94