1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef QEMU_MIPS_CPU_QOM_H
21#define QEMU_MIPS_CPU_QOM_H
22
23#include "qom/cpu.h"
24
25#ifdef TARGET_MIPS64
26#define TYPE_MIPS_CPU "mips64-cpu"
27#else
28#define TYPE_MIPS_CPU "mips-cpu"
29#endif
30
31#define MIPS_CPU_CLASS(klass) \
32 OBJECT_CLASS_CHECK(MIPSCPUClass, (klass), TYPE_MIPS_CPU)
33#define MIPS_CPU(obj) \
34 OBJECT_CHECK(MIPSCPU, (obj), TYPE_MIPS_CPU)
35#define MIPS_CPU_GET_CLASS(obj) \
36 OBJECT_GET_CLASS(MIPSCPUClass, (obj), TYPE_MIPS_CPU)
37
38
39
40
41
42
43
44
45typedef struct MIPSCPUClass {
46
47 CPUClass parent_class;
48
49
50 DeviceRealize parent_realize;
51 void (*parent_reset)(CPUState *cpu);
52} MIPSCPUClass;
53
54
55
56
57
58
59
60typedef struct MIPSCPU {
61
62 CPUState parent_obj;
63
64
65 CPUMIPSState env;
66} MIPSCPU;
67
68static inline MIPSCPU *mips_env_get_cpu(CPUMIPSState *env)
69{
70 return container_of(env, MIPSCPU, env);
71}
72
73#define ENV_GET_CPU(e) CPU(mips_env_get_cpu(e))
74
75#define ENV_OFFSET offsetof(MIPSCPU, env)
76
77#ifndef CONFIG_USER_ONLY
78extern const struct VMStateDescription vmstate_mips_cpu;
79#endif
80
81void mips_cpu_do_interrupt(CPUState *cpu);
82bool mips_cpu_exec_interrupt(CPUState *cpu, int int_req);
83void mips_cpu_dump_state(CPUState *cpu, FILE *f, fprintf_function cpu_fprintf,
84 int flags);
85hwaddr mips_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
86int mips_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
87int mips_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
88void mips_cpu_do_unaligned_access(CPUState *cpu, vaddr addr,
89 int is_write, int is_user, uintptr_t retaddr);
90
91#endif
92