Lines Matching full:cpu
2 * QEMU CPU model
23 #include "hw/core/cpu.h"
40 CPUState *cpu; in cpu_by_arch_id() local
42 CPU_FOREACH(cpu) { in cpu_by_arch_id()
43 CPUClass *cc = CPU_GET_CLASS(cpu); in cpu_by_arch_id()
45 if (cc->get_arch_id(cpu) == id) { in cpu_by_arch_id()
46 return cpu; in cpu_by_arch_id()
60 CPUState *cpu = CPU(object_new(typename)); in cpu_create() local
61 if (!qdev_realize(DEVICE(cpu), NULL, &err)) { in cpu_create()
63 object_unref(OBJECT(cpu)); in cpu_create()
66 return cpu; in cpu_create()
71 void cpu_reset_interrupt(CPUState *cpu, int mask) in cpu_reset_interrupt() argument
78 cpu->interrupt_request &= ~mask; in cpu_reset_interrupt()
84 void cpu_exit(CPUState *cpu) in cpu_exit() argument
86 qatomic_set(&cpu->exit_request, 1); in cpu_exit()
89 qatomic_set(&cpu->neg.icount_decr.u16.high, -1); in cpu_exit()
92 static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg) in cpu_common_gdb_read_register() argument
97 static int cpu_common_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg) in cpu_common_gdb_write_register() argument
102 void cpu_dump_state(CPUState *cpu, FILE *f, int flags) in cpu_dump_state() argument
104 CPUClass *cc = CPU_GET_CLASS(cpu); in cpu_dump_state()
107 cpu_synchronize_state(cpu); in cpu_dump_state()
108 cc->dump_state(cpu, f, flags); in cpu_dump_state()
112 void cpu_reset(CPUState *cpu) in cpu_reset() argument
114 device_cold_reset(DEVICE(cpu)); in cpu_reset()
116 trace_cpu_reset(cpu->cpu_index); in cpu_reset()
121 CPUState *cpu = CPU(obj); in cpu_common_reset_hold() local
122 CPUClass *cc = CPU_GET_CLASS(cpu); in cpu_common_reset_hold()
125 qemu_log("CPU Reset (CPU %d)\n", cpu->cpu_index); in cpu_common_reset_hold()
126 log_cpu_state(cpu, cc->reset_dump_flags); in cpu_common_reset_hold()
129 cpu->interrupt_request = 0; in cpu_common_reset_hold()
130 cpu->halted = cpu->start_powered_off; in cpu_common_reset_hold()
131 cpu->mem_io_pc = 0; in cpu_common_reset_hold()
132 cpu->icount_extra = 0; in cpu_common_reset_hold()
133 qatomic_set(&cpu->neg.icount_decr.u32, 0); in cpu_common_reset_hold()
134 cpu->neg.can_do_io = true; in cpu_common_reset_hold()
135 cpu->exception_index = -1; in cpu_common_reset_hold()
136 cpu->crash_occurred = false; in cpu_common_reset_hold()
137 cpu->cflags_next_tb = -1; in cpu_common_reset_hold()
139 cpu_exec_reset_hold(cpu); in cpu_common_reset_hold()
198 CPUState *cpu = CPU(dev); in cpu_common_realizefn() local
209 cpu->ignore_memory_transaction_failures = in cpu_common_realizefn()
215 cpu_synchronize_post_init(cpu); in cpu_common_realizefn()
216 cpu_resume(cpu); in cpu_common_realizefn()
219 /* NOTE: latest generic point where the cpu is fully realized */ in cpu_common_realizefn()
224 CPUState *cpu = CPU(dev); in cpu_common_unrealizefn() local
226 /* Call the plugin hook before clearing the cpu is fully unrealized */ in cpu_common_unrealizefn()
229 qemu_plugin_vcpu_exit_hook(cpu); in cpu_common_unrealizefn()
233 /* NOTE: latest generic point before the cpu is fully unrealized */ in cpu_common_unrealizefn()
234 cpu_exec_unrealizefn(cpu); in cpu_common_unrealizefn()
239 CPUState *cpu = CPU(obj); in cpu_common_initfn() local
241 gdb_init_cpu(cpu); in cpu_common_initfn()
242 cpu->cpu_index = UNASSIGNED_CPU_INDEX; in cpu_common_initfn()
243 cpu->cluster_index = UNASSIGNED_CLUSTER_INDEX; in cpu_common_initfn()
246 cpu->nr_cores = 1; in cpu_common_initfn()
247 cpu->nr_threads = 1; in cpu_common_initfn()
248 cpu->cflags_next_tb = -1; in cpu_common_initfn()
251 cpu->thread = g_new0(QemuThread, 1); in cpu_common_initfn()
252 cpu->halt_cond = g_new0(QemuCond, 1); in cpu_common_initfn()
253 qemu_cond_init(cpu->halt_cond); in cpu_common_initfn()
255 qemu_mutex_init(&cpu->work_mutex); in cpu_common_initfn()
256 qemu_lockcnt_init(&cpu->in_ioctl_lock); in cpu_common_initfn()
257 QSIMPLEQ_INIT(&cpu->work_list); in cpu_common_initfn()
258 QTAILQ_INIT(&cpu->breakpoints); in cpu_common_initfn()
259 QTAILQ_INIT(&cpu->watchpoints); in cpu_common_initfn()
261 cpu_exec_initfn(cpu); in cpu_common_initfn()
264 * Plugin initialization must wait until the cpu start executing in cpu_common_initfn()
270 cpu->plugin_state = qemu_plugin_create_vcpu_state(); in cpu_common_initfn()
271 qemu_plugin_vcpu_init_hook(cpu); in cpu_common_initfn()
278 CPUState *cpu = CPU(obj); in cpu_common_finalize() local
282 g_free(cpu->plugin_state); in cpu_common_finalize()
285 free_queued_cpu_work(cpu); in cpu_common_finalize()
287 if (cpu->gdb_regs) { in cpu_common_finalize()
288 g_array_free(cpu->gdb_regs, TRUE); in cpu_common_finalize()
290 qemu_lockcnt_destroy(&cpu->in_ioctl_lock); in cpu_common_finalize()
291 qemu_mutex_destroy(&cpu->work_mutex); in cpu_common_finalize()
292 qemu_cond_destroy(cpu->halt_cond); in cpu_common_finalize()
293 g_free(cpu->halt_cond); in cpu_common_finalize()
294 g_free(cpu->thread); in cpu_common_finalize()
297 static int64_t cpu_common_get_arch_id(CPUState *cpu) in cpu_common_get_arch_id() argument
299 return cpu->cpu_index; in cpu_common_get_arch_id()