1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef QEMU_CRIS_CPU_QOM_H
21#define QEMU_CRIS_CPU_QOM_H
22
23#include "qom/cpu.h"
24
25#define TYPE_CRIS_CPU "cris-cpu"
26
27#define CRIS_CPU_CLASS(klass) \
28 OBJECT_CLASS_CHECK(CRISCPUClass, (klass), TYPE_CRIS_CPU)
29#define CRIS_CPU(obj) \
30 OBJECT_CHECK(CRISCPU, (obj), TYPE_CRIS_CPU)
31#define CRIS_CPU_GET_CLASS(obj) \
32 OBJECT_GET_CLASS(CRISCPUClass, (obj), TYPE_CRIS_CPU)
33
34
35
36
37
38
39
40
41
42typedef struct CRISCPUClass {
43
44 CPUClass parent_class;
45
46
47 DeviceRealize parent_realize;
48 void (*parent_reset)(CPUState *cpu);
49
50 uint32_t vr;
51} CRISCPUClass;
52
53
54
55
56
57
58
59typedef struct CRISCPU {
60
61 CPUState parent_obj;
62
63
64 CPUCRISState env;
65} CRISCPU;
66
67static inline CRISCPU *cris_env_get_cpu(CPUCRISState *env)
68{
69 return container_of(env, CRISCPU, env);
70}
71
72#define ENV_GET_CPU(e) CPU(cris_env_get_cpu(e))
73
74#define ENV_OFFSET offsetof(CRISCPU, env)
75
76#ifndef CONFIG_USER_ONLY
77extern const struct VMStateDescription vmstate_cris_cpu;
78#endif
79
80void cris_cpu_do_interrupt(CPUState *cpu);
81void crisv10_cpu_do_interrupt(CPUState *cpu);
82bool cris_cpu_exec_interrupt(CPUState *cpu, int int_req);
83
84void cris_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
85 int flags);
86
87hwaddr cris_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
88
89int crisv10_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
90int cris_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
91int cris_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
92
93#endif
94