Lines Matching full:cpu
2 * QEMU CPU model
23 #include "hw/core/cpu.h"
43 CPUState *cpu; in cpu_by_arch_id() local
45 CPU_FOREACH(cpu) { in cpu_by_arch_id()
46 if (cpu->cc->get_arch_id(cpu) == id) { in cpu_by_arch_id()
47 return cpu; in cpu_by_arch_id()
61 CPUState *cpu = CPU(object_new(typename)); in cpu_create() local
62 if (!qdev_realize(DEVICE(cpu), NULL, &err)) { in cpu_create()
64 object_unref(OBJECT(cpu)); in cpu_create()
67 return cpu; in cpu_create()
72 void cpu_reset_interrupt(CPUState *cpu, int mask) in cpu_reset_interrupt() argument
79 cpu->interrupt_request &= ~mask; in cpu_reset_interrupt()
85 void cpu_exit(CPUState *cpu) in cpu_exit() argument
87 qatomic_set(&cpu->exit_request, 1); in cpu_exit()
90 qatomic_set(&cpu->neg.icount_decr.u16.high, -1); in cpu_exit()
93 static int cpu_common_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg) in cpu_common_gdb_read_register() argument
98 static int cpu_common_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg) in cpu_common_gdb_write_register() argument
103 void cpu_dump_state(CPUState *cpu, FILE *f, int flags) in cpu_dump_state() argument
105 if (cpu->cc->dump_state) { in cpu_dump_state()
106 cpu_synchronize_state(cpu); in cpu_dump_state()
107 cpu->cc->dump_state(cpu, f, flags); in cpu_dump_state()
111 void cpu_reset(CPUState *cpu) in cpu_reset() argument
113 device_cold_reset(DEVICE(cpu)); in cpu_reset()
115 trace_cpu_reset(cpu->cpu_index); in cpu_reset()
120 CPUState *cpu = CPU(obj); in cpu_common_reset_hold() local
123 qemu_log("CPU Reset (CPU %d)\n", cpu->cpu_index); in cpu_common_reset_hold()
124 log_cpu_state(cpu, cpu->cc->reset_dump_flags); in cpu_common_reset_hold()
127 cpu->interrupt_request = 0; in cpu_common_reset_hold()
128 cpu->halted = cpu->start_powered_off; in cpu_common_reset_hold()
129 cpu->mem_io_pc = 0; in cpu_common_reset_hold()
130 cpu->icount_extra = 0; in cpu_common_reset_hold()
131 qatomic_set(&cpu->neg.icount_decr.u32, 0); in cpu_common_reset_hold()
132 cpu->neg.can_do_io = true; in cpu_common_reset_hold()
133 cpu->exception_index = -1; in cpu_common_reset_hold()
134 cpu->crash_occurred = false; in cpu_common_reset_hold()
135 cpu->cflags_next_tb = -1; in cpu_common_reset_hold()
137 cpu_exec_reset_hold(cpu); in cpu_common_reset_hold()
213 error_report("-cpu option cannot be empty"); in parse_cpu_option()
219 error_report("unable to find CPU model '%s'", model_pieces[0]); in parse_cpu_option()
231 bool cpu_exec_realizefn(CPUState *cpu, Error **errp) in cpu_exec_realizefn() argument
233 if (!accel_cpu_common_realize(cpu, errp)) { in cpu_exec_realizefn()
237 gdb_init_cpu(cpu); in cpu_exec_realizefn()
239 /* Wait until cpu initialization complete before exposing cpu. */ in cpu_exec_realizefn()
240 cpu_list_add(cpu); in cpu_exec_realizefn()
242 cpu_vmstate_register(cpu); in cpu_exec_realizefn()
249 CPUState *cpu = CPU(dev); in cpu_common_realizefn() local
260 cpu->ignore_memory_transaction_failures = in cpu_common_realizefn()
266 cpu_synchronize_post_init(cpu); in cpu_common_realizefn()
267 cpu_resume(cpu); in cpu_common_realizefn()
270 /* NOTE: latest generic point where the cpu is fully realized */ in cpu_common_realizefn()
275 CPUState *cpu = CPU(dev); in cpu_common_unrealizefn() local
277 /* Call the plugin hook before clearing the cpu is fully unrealized */ in cpu_common_unrealizefn()
280 qemu_plugin_vcpu_exit_hook(cpu); in cpu_common_unrealizefn()
284 /* NOTE: latest generic point before the cpu is fully unrealized */ in cpu_common_unrealizefn()
285 cpu_exec_unrealizefn(cpu); in cpu_common_unrealizefn()
288 void cpu_exec_unrealizefn(CPUState *cpu) in cpu_exec_unrealizefn() argument
290 cpu_vmstate_unregister(cpu); in cpu_exec_unrealizefn()
292 cpu_list_remove(cpu); in cpu_exec_unrealizefn()
297 accel_cpu_common_unrealize(cpu); in cpu_exec_unrealizefn()
302 CPUState *cpu = CPU(obj); in cpu_common_initfn() local
306 /* cache the cpu class for the hotpath */ in cpu_common_initfn()
307 cpu->cc = CPU_GET_CLASS(cpu); in cpu_common_initfn()
309 cpu->cpu_index = UNASSIGNED_CPU_INDEX; in cpu_common_initfn()
310 cpu->cluster_index = UNASSIGNED_CLUSTER_INDEX; in cpu_common_initfn()
311 cpu->as = NULL; in cpu_common_initfn()
312 cpu->num_ases = 0; in cpu_common_initfn()
315 cpu->nr_threads = 1; in cpu_common_initfn()
318 cpu->thread = g_new0(QemuThread, 1); in cpu_common_initfn()
319 cpu->halt_cond = g_new0(QemuCond, 1); in cpu_common_initfn()
320 qemu_cond_init(cpu->halt_cond); in cpu_common_initfn()
322 qemu_mutex_init(&cpu->work_mutex); in cpu_common_initfn()
323 qemu_lockcnt_init(&cpu->in_ioctl_lock); in cpu_common_initfn()
324 QSIMPLEQ_INIT(&cpu->work_list); in cpu_common_initfn()
325 QTAILQ_INIT(&cpu->breakpoints); in cpu_common_initfn()
326 QTAILQ_INIT(&cpu->watchpoints); in cpu_common_initfn()
328 cpu_exec_initfn(cpu); in cpu_common_initfn()
331 * Plugin initialization must wait until the cpu start executing in cpu_common_initfn()
337 cpu->plugin_state = qemu_plugin_create_vcpu_state(); in cpu_common_initfn()
338 qemu_plugin_vcpu_init_hook(cpu); in cpu_common_initfn()
345 CPUState *cpu = CPU(obj); in cpu_common_finalize() local
349 g_free(cpu->plugin_state); in cpu_common_finalize()
352 free_queued_cpu_work(cpu); in cpu_common_finalize()
354 if (cpu->gdb_regs) { in cpu_common_finalize()
355 g_array_free(cpu->gdb_regs, TRUE); in cpu_common_finalize()
357 qemu_lockcnt_destroy(&cpu->in_ioctl_lock); in cpu_common_finalize()
358 qemu_mutex_destroy(&cpu->work_mutex); in cpu_common_finalize()
359 qemu_cond_destroy(cpu->halt_cond); in cpu_common_finalize()
360 g_free(cpu->halt_cond); in cpu_common_finalize()
361 g_free(cpu->thread); in cpu_common_finalize()
364 static int64_t cpu_common_get_arch_id(CPUState *cpu) in cpu_common_get_arch_id() argument
366 return cpu->cpu_index; in cpu_common_get_arch_id()