Loading cpus.c +21 −28 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ static bool all_cpu_threads_idle(void) { CPUState *cpu; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { if (!cpu_thread_is_idle(cpu)) { return false; } Loading Loading @@ -416,7 +416,7 @@ void hw_error(const char *fmt, ...) fprintf(stderr, "qemu: hardware error: "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { fprintf(stderr, "CPU #%d:\n", cpu->cpu_index); cpu_dump_state(cpu, stderr, fprintf, CPU_DUMP_FPU); } Loading @@ -428,7 +428,7 @@ void cpu_synchronize_all_states(void) { CPUState *cpu; for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { cpu_synchronize_state(cpu); } } Loading @@ -437,7 +437,7 @@ void cpu_synchronize_all_post_reset(void) { CPUState *cpu; for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { cpu_synchronize_post_reset(cpu); } } Loading @@ -446,7 +446,7 @@ void cpu_synchronize_all_post_init(void) { CPUState *cpu; for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { cpu_synchronize_post_init(cpu); } } Loading Loading @@ -760,7 +760,7 @@ static void qemu_tcg_wait_io_event(void) qemu_cond_wait(&qemu_io_proceeded_cond, &qemu_global_mutex); } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { qemu_wait_io_event_common(cpu); } } Loading Loading @@ -872,11 +872,11 @@ static void *qemu_tcg_cpu_thread_fn(void *arg) qemu_cond_signal(&qemu_cpu_cond); /* wait for initial kick-off after machine start */ while (first_cpu->stopped) { while (QTAILQ_FIRST(&cpus)->stopped) { qemu_cond_wait(tcg_halt_cond, &qemu_global_mutex); /* process any pending work */ for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { qemu_wait_io_event_common(cpu); } } Loading Loading @@ -991,13 +991,12 @@ void qemu_mutex_unlock_iothread(void) static int all_vcpus_paused(void) { CPUState *cpu = first_cpu; CPUState *cpu; while (cpu) { CPU_FOREACH(cpu) { if (!cpu->stopped) { return 0; } cpu = cpu->next_cpu; } return 1; Loading @@ -1005,23 +1004,20 @@ static int all_vcpus_paused(void) void pause_all_vcpus(void) { CPUState *cpu = first_cpu; CPUState *cpu; qemu_clock_enable(QEMU_CLOCK_VIRTUAL, false); while (cpu) { CPU_FOREACH(cpu) { cpu->stop = true; qemu_cpu_kick(cpu); cpu = cpu->next_cpu; } if (qemu_in_vcpu_thread()) { cpu_stop_current(); if (!kvm_enabled()) { cpu = first_cpu; while (cpu) { CPU_FOREACH(cpu) { cpu->stop = false; cpu->stopped = true; cpu = cpu->next_cpu; } return; } Loading @@ -1029,10 +1025,8 @@ void pause_all_vcpus(void) while (!all_vcpus_paused()) { qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex); cpu = first_cpu; while (cpu) { CPU_FOREACH(cpu) { qemu_cpu_kick(cpu); cpu = cpu->next_cpu; } } } Loading @@ -1046,12 +1040,11 @@ void cpu_resume(CPUState *cpu) void resume_all_vcpus(void) { CPUState *cpu = first_cpu; CPUState *cpu; qemu_clock_enable(QEMU_CLOCK_VIRTUAL, true); while (cpu) { CPU_FOREACH(cpu) { cpu_resume(cpu); cpu = cpu->next_cpu; } } Loading Loading @@ -1215,7 +1208,7 @@ static void tcg_exec_all(void) if (next_cpu == NULL) { next_cpu = first_cpu; } for (; next_cpu != NULL && !exit_request; next_cpu = next_cpu->next_cpu) { for (; next_cpu != NULL && !exit_request; next_cpu = CPU_NEXT(next_cpu)) { CPUState *cpu = next_cpu; CPUArchState *env = cpu->env_ptr; Loading @@ -1240,7 +1233,7 @@ void set_numa_modes(void) CPUState *cpu; int i; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { for (i = 0; i < nb_numa_nodes; i++) { if (test_bit(cpu->cpu_index, node_cpumask[i])) { cpu->numa_node = i; Loading @@ -1262,7 +1255,7 @@ CpuInfoList *qmp_query_cpus(Error **errp) CpuInfoList *head = NULL, *cur_item = NULL; CPUState *cpu; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { CpuInfoList *info; #if defined(TARGET_I386) X86CPU *x86_cpu = X86_CPU(cpu); Loading Loading @@ -1391,7 +1384,7 @@ void qmp_inject_nmi(Error **errp) #if defined(TARGET_I386) CPUState *cs; for (cs = first_cpu; cs != NULL; cs = cs->next_cpu) { CPU_FOREACH(cs) { X86CPU *cpu = X86_CPU(cs); CPUX86State *env = &cpu->env; Loading @@ -1405,7 +1398,7 @@ void qmp_inject_nmi(Error **errp) CPUState *cs; S390CPU *cpu; for (cs = first_cpu; cs != NULL; cs = cs->next_cpu) { CPU_FOREACH(cs) { cpu = S390_CPU(cs); if (cpu->env.cpu_num == monitor_get_cpu_index()) { if (s390_cpu_restart(S390_CPU(cs)) == -1) { Loading cputlb.c +1 −1 Original line number Diff line number Diff line Loading @@ -189,7 +189,7 @@ void cpu_tlb_reset_dirty_all(ram_addr_t start1, ram_addr_t length) CPUState *cpu; CPUArchState *env; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { int mmu_idx; env = cpu->env_ptr; Loading dump.c +5 −5 Original line number Diff line number Diff line Loading @@ -277,7 +277,7 @@ static int write_elf64_notes(DumpState *s) int ret; int id; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { id = cpu_index(cpu); ret = cpu_write_elf64_note(fd_write_vmcore, cpu, id, s); if (ret < 0) { Loading @@ -286,7 +286,7 @@ static int write_elf64_notes(DumpState *s) } } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { ret = cpu_write_elf64_qemunote(fd_write_vmcore, cpu, s); if (ret < 0) { dump_error(s, "dump: failed to write CPU status.\n"); Loading Loading @@ -327,7 +327,7 @@ static int write_elf32_notes(DumpState *s) int ret; int id; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { id = cpu_index(cpu); ret = cpu_write_elf32_note(fd_write_vmcore, cpu, id, s); if (ret < 0) { Loading @@ -336,7 +336,7 @@ static int write_elf32_notes(DumpState *s) } } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { ret = cpu_write_elf32_qemunote(fd_write_vmcore, cpu, s); if (ret < 0) { dump_error(s, "dump: failed to write CPU status.\n"); Loading Loading @@ -734,7 +734,7 @@ static int dump_init(DumpState *s, int fd, bool paging, bool has_filter, */ cpu_synchronize_all_states(); nr_cpus = 0; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { nr_cpus++; } Loading exec.c +10 −16 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ static MemoryRegion io_mem_unassigned; #endif CPUState *first_cpu; struct CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); /* current CPU in the current thread. It is only valid inside cpu_exec() */ DEFINE_TLS(CPUState *, current_cpu); Loading Loading @@ -351,26 +351,23 @@ const VMStateDescription vmstate_cpu_common = { CPUState *qemu_get_cpu(int index) { CPUState *cpu = first_cpu; CPUState *cpu; while (cpu) { CPU_FOREACH(cpu) { if (cpu->cpu_index == index) { break; return cpu; } cpu = cpu->next_cpu; } return cpu; return NULL; } void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data) { CPUState *cpu; cpu = first_cpu; while (cpu) { CPU_FOREACH(cpu) { func(cpu, data); cpu = cpu->next_cpu; } } Loading @@ -378,17 +375,14 @@ void cpu_exec_init(CPUArchState *env) { CPUState *cpu = ENV_GET_CPU(env); CPUClass *cc = CPU_GET_CLASS(cpu); CPUState **pcpu; CPUState *some_cpu; int cpu_index; #if defined(CONFIG_USER_ONLY) cpu_list_lock(); #endif cpu->next_cpu = NULL; pcpu = &first_cpu; cpu_index = 0; while (*pcpu != NULL) { pcpu = &(*pcpu)->next_cpu; CPU_FOREACH(some_cpu) { cpu_index++; } cpu->cpu_index = cpu_index; Loading @@ -398,7 +392,7 @@ void cpu_exec_init(CPUArchState *env) #ifndef CONFIG_USER_ONLY cpu->thread_id = qemu_get_thread_id(); #endif *pcpu = cpu; QTAILQ_INSERT_TAIL(&cpus, cpu, node); #if defined(CONFIG_USER_ONLY) cpu_list_unlock(); #endif Loading Loading @@ -1762,7 +1756,7 @@ static void tcg_commit(MemoryListener *listener) /* since each CPU stores ram addresses in its TLB cache, we must reset the modified entries */ /* XXX: slow ! */ for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { CPUArchState *env = cpu->env_ptr; tlb_flush(env, 1); Loading gdbstub.c +7 −7 Original line number Diff line number Diff line Loading @@ -648,7 +648,7 @@ static int gdb_breakpoint_insert(target_ulong addr, target_ulong len, int type) switch (type) { case GDB_BREAKPOINT_SW: case GDB_BREAKPOINT_HW: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_breakpoint_insert(env, addr, BP_GDB, NULL); if (err) Loading @@ -659,7 +659,7 @@ static int gdb_breakpoint_insert(target_ulong addr, target_ulong len, int type) case GDB_WATCHPOINT_WRITE: case GDB_WATCHPOINT_READ: case GDB_WATCHPOINT_ACCESS: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_watchpoint_insert(env, addr, len, xlat_gdb_type[type], NULL); Loading @@ -686,7 +686,7 @@ static int gdb_breakpoint_remove(target_ulong addr, target_ulong len, int type) switch (type) { case GDB_BREAKPOINT_SW: case GDB_BREAKPOINT_HW: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_breakpoint_remove(env, addr, BP_GDB); if (err) Loading @@ -697,7 +697,7 @@ static int gdb_breakpoint_remove(target_ulong addr, target_ulong len, int type) case GDB_WATCHPOINT_WRITE: case GDB_WATCHPOINT_READ: case GDB_WATCHPOINT_ACCESS: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_watchpoint_remove(env, addr, len, xlat_gdb_type[type]); if (err) Loading @@ -720,7 +720,7 @@ static void gdb_breakpoint_remove_all(void) return; } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; cpu_breakpoint_remove_all(env, BP_GDB); #ifndef CONFIG_USER_ONLY Loading @@ -744,7 +744,7 @@ static CPUState *find_cpu(uint32_t thread_id) { CPUState *cpu; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { if (cpu_index(cpu) == thread_id) { return cpu; } Loading Loading @@ -1070,7 +1070,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) if (s->query_cpu) { snprintf(buf, sizeof(buf), "m%x", cpu_index(s->query_cpu)); put_packet(s, buf); s->query_cpu = s->query_cpu->next_cpu; s->query_cpu = CPU_NEXT(s->query_cpu); } else put_packet(s, "l"); break; Loading Loading
cpus.c +21 −28 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ static bool all_cpu_threads_idle(void) { CPUState *cpu; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { if (!cpu_thread_is_idle(cpu)) { return false; } Loading Loading @@ -416,7 +416,7 @@ void hw_error(const char *fmt, ...) fprintf(stderr, "qemu: hardware error: "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { fprintf(stderr, "CPU #%d:\n", cpu->cpu_index); cpu_dump_state(cpu, stderr, fprintf, CPU_DUMP_FPU); } Loading @@ -428,7 +428,7 @@ void cpu_synchronize_all_states(void) { CPUState *cpu; for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { cpu_synchronize_state(cpu); } } Loading @@ -437,7 +437,7 @@ void cpu_synchronize_all_post_reset(void) { CPUState *cpu; for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { cpu_synchronize_post_reset(cpu); } } Loading @@ -446,7 +446,7 @@ void cpu_synchronize_all_post_init(void) { CPUState *cpu; for (cpu = first_cpu; cpu; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { cpu_synchronize_post_init(cpu); } } Loading Loading @@ -760,7 +760,7 @@ static void qemu_tcg_wait_io_event(void) qemu_cond_wait(&qemu_io_proceeded_cond, &qemu_global_mutex); } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { qemu_wait_io_event_common(cpu); } } Loading Loading @@ -872,11 +872,11 @@ static void *qemu_tcg_cpu_thread_fn(void *arg) qemu_cond_signal(&qemu_cpu_cond); /* wait for initial kick-off after machine start */ while (first_cpu->stopped) { while (QTAILQ_FIRST(&cpus)->stopped) { qemu_cond_wait(tcg_halt_cond, &qemu_global_mutex); /* process any pending work */ for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { qemu_wait_io_event_common(cpu); } } Loading Loading @@ -991,13 +991,12 @@ void qemu_mutex_unlock_iothread(void) static int all_vcpus_paused(void) { CPUState *cpu = first_cpu; CPUState *cpu; while (cpu) { CPU_FOREACH(cpu) { if (!cpu->stopped) { return 0; } cpu = cpu->next_cpu; } return 1; Loading @@ -1005,23 +1004,20 @@ static int all_vcpus_paused(void) void pause_all_vcpus(void) { CPUState *cpu = first_cpu; CPUState *cpu; qemu_clock_enable(QEMU_CLOCK_VIRTUAL, false); while (cpu) { CPU_FOREACH(cpu) { cpu->stop = true; qemu_cpu_kick(cpu); cpu = cpu->next_cpu; } if (qemu_in_vcpu_thread()) { cpu_stop_current(); if (!kvm_enabled()) { cpu = first_cpu; while (cpu) { CPU_FOREACH(cpu) { cpu->stop = false; cpu->stopped = true; cpu = cpu->next_cpu; } return; } Loading @@ -1029,10 +1025,8 @@ void pause_all_vcpus(void) while (!all_vcpus_paused()) { qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex); cpu = first_cpu; while (cpu) { CPU_FOREACH(cpu) { qemu_cpu_kick(cpu); cpu = cpu->next_cpu; } } } Loading @@ -1046,12 +1040,11 @@ void cpu_resume(CPUState *cpu) void resume_all_vcpus(void) { CPUState *cpu = first_cpu; CPUState *cpu; qemu_clock_enable(QEMU_CLOCK_VIRTUAL, true); while (cpu) { CPU_FOREACH(cpu) { cpu_resume(cpu); cpu = cpu->next_cpu; } } Loading Loading @@ -1215,7 +1208,7 @@ static void tcg_exec_all(void) if (next_cpu == NULL) { next_cpu = first_cpu; } for (; next_cpu != NULL && !exit_request; next_cpu = next_cpu->next_cpu) { for (; next_cpu != NULL && !exit_request; next_cpu = CPU_NEXT(next_cpu)) { CPUState *cpu = next_cpu; CPUArchState *env = cpu->env_ptr; Loading @@ -1240,7 +1233,7 @@ void set_numa_modes(void) CPUState *cpu; int i; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { for (i = 0; i < nb_numa_nodes; i++) { if (test_bit(cpu->cpu_index, node_cpumask[i])) { cpu->numa_node = i; Loading @@ -1262,7 +1255,7 @@ CpuInfoList *qmp_query_cpus(Error **errp) CpuInfoList *head = NULL, *cur_item = NULL; CPUState *cpu; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { CpuInfoList *info; #if defined(TARGET_I386) X86CPU *x86_cpu = X86_CPU(cpu); Loading Loading @@ -1391,7 +1384,7 @@ void qmp_inject_nmi(Error **errp) #if defined(TARGET_I386) CPUState *cs; for (cs = first_cpu; cs != NULL; cs = cs->next_cpu) { CPU_FOREACH(cs) { X86CPU *cpu = X86_CPU(cs); CPUX86State *env = &cpu->env; Loading @@ -1405,7 +1398,7 @@ void qmp_inject_nmi(Error **errp) CPUState *cs; S390CPU *cpu; for (cs = first_cpu; cs != NULL; cs = cs->next_cpu) { CPU_FOREACH(cs) { cpu = S390_CPU(cs); if (cpu->env.cpu_num == monitor_get_cpu_index()) { if (s390_cpu_restart(S390_CPU(cs)) == -1) { Loading
cputlb.c +1 −1 Original line number Diff line number Diff line Loading @@ -189,7 +189,7 @@ void cpu_tlb_reset_dirty_all(ram_addr_t start1, ram_addr_t length) CPUState *cpu; CPUArchState *env; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { int mmu_idx; env = cpu->env_ptr; Loading
dump.c +5 −5 Original line number Diff line number Diff line Loading @@ -277,7 +277,7 @@ static int write_elf64_notes(DumpState *s) int ret; int id; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { id = cpu_index(cpu); ret = cpu_write_elf64_note(fd_write_vmcore, cpu, id, s); if (ret < 0) { Loading @@ -286,7 +286,7 @@ static int write_elf64_notes(DumpState *s) } } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { ret = cpu_write_elf64_qemunote(fd_write_vmcore, cpu, s); if (ret < 0) { dump_error(s, "dump: failed to write CPU status.\n"); Loading Loading @@ -327,7 +327,7 @@ static int write_elf32_notes(DumpState *s) int ret; int id; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { id = cpu_index(cpu); ret = cpu_write_elf32_note(fd_write_vmcore, cpu, id, s); if (ret < 0) { Loading @@ -336,7 +336,7 @@ static int write_elf32_notes(DumpState *s) } } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { ret = cpu_write_elf32_qemunote(fd_write_vmcore, cpu, s); if (ret < 0) { dump_error(s, "dump: failed to write CPU status.\n"); Loading Loading @@ -734,7 +734,7 @@ static int dump_init(DumpState *s, int fd, bool paging, bool has_filter, */ cpu_synchronize_all_states(); nr_cpus = 0; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { nr_cpus++; } Loading
exec.c +10 −16 Original line number Diff line number Diff line Loading @@ -69,7 +69,7 @@ static MemoryRegion io_mem_unassigned; #endif CPUState *first_cpu; struct CPUTailQ cpus = QTAILQ_HEAD_INITIALIZER(cpus); /* current CPU in the current thread. It is only valid inside cpu_exec() */ DEFINE_TLS(CPUState *, current_cpu); Loading Loading @@ -351,26 +351,23 @@ const VMStateDescription vmstate_cpu_common = { CPUState *qemu_get_cpu(int index) { CPUState *cpu = first_cpu; CPUState *cpu; while (cpu) { CPU_FOREACH(cpu) { if (cpu->cpu_index == index) { break; return cpu; } cpu = cpu->next_cpu; } return cpu; return NULL; } void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data) { CPUState *cpu; cpu = first_cpu; while (cpu) { CPU_FOREACH(cpu) { func(cpu, data); cpu = cpu->next_cpu; } } Loading @@ -378,17 +375,14 @@ void cpu_exec_init(CPUArchState *env) { CPUState *cpu = ENV_GET_CPU(env); CPUClass *cc = CPU_GET_CLASS(cpu); CPUState **pcpu; CPUState *some_cpu; int cpu_index; #if defined(CONFIG_USER_ONLY) cpu_list_lock(); #endif cpu->next_cpu = NULL; pcpu = &first_cpu; cpu_index = 0; while (*pcpu != NULL) { pcpu = &(*pcpu)->next_cpu; CPU_FOREACH(some_cpu) { cpu_index++; } cpu->cpu_index = cpu_index; Loading @@ -398,7 +392,7 @@ void cpu_exec_init(CPUArchState *env) #ifndef CONFIG_USER_ONLY cpu->thread_id = qemu_get_thread_id(); #endif *pcpu = cpu; QTAILQ_INSERT_TAIL(&cpus, cpu, node); #if defined(CONFIG_USER_ONLY) cpu_list_unlock(); #endif Loading Loading @@ -1762,7 +1756,7 @@ static void tcg_commit(MemoryListener *listener) /* since each CPU stores ram addresses in its TLB cache, we must reset the modified entries */ /* XXX: slow ! */ for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { CPUArchState *env = cpu->env_ptr; tlb_flush(env, 1); Loading
gdbstub.c +7 −7 Original line number Diff line number Diff line Loading @@ -648,7 +648,7 @@ static int gdb_breakpoint_insert(target_ulong addr, target_ulong len, int type) switch (type) { case GDB_BREAKPOINT_SW: case GDB_BREAKPOINT_HW: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_breakpoint_insert(env, addr, BP_GDB, NULL); if (err) Loading @@ -659,7 +659,7 @@ static int gdb_breakpoint_insert(target_ulong addr, target_ulong len, int type) case GDB_WATCHPOINT_WRITE: case GDB_WATCHPOINT_READ: case GDB_WATCHPOINT_ACCESS: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_watchpoint_insert(env, addr, len, xlat_gdb_type[type], NULL); Loading @@ -686,7 +686,7 @@ static int gdb_breakpoint_remove(target_ulong addr, target_ulong len, int type) switch (type) { case GDB_BREAKPOINT_SW: case GDB_BREAKPOINT_HW: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_breakpoint_remove(env, addr, BP_GDB); if (err) Loading @@ -697,7 +697,7 @@ static int gdb_breakpoint_remove(target_ulong addr, target_ulong len, int type) case GDB_WATCHPOINT_WRITE: case GDB_WATCHPOINT_READ: case GDB_WATCHPOINT_ACCESS: for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; err = cpu_watchpoint_remove(env, addr, len, xlat_gdb_type[type]); if (err) Loading @@ -720,7 +720,7 @@ static void gdb_breakpoint_remove_all(void) return; } for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { env = cpu->env_ptr; cpu_breakpoint_remove_all(env, BP_GDB); #ifndef CONFIG_USER_ONLY Loading @@ -744,7 +744,7 @@ static CPUState *find_cpu(uint32_t thread_id) { CPUState *cpu; for (cpu = first_cpu; cpu != NULL; cpu = cpu->next_cpu) { CPU_FOREACH(cpu) { if (cpu_index(cpu) == thread_id) { return cpu; } Loading Loading @@ -1070,7 +1070,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) if (s->query_cpu) { snprintf(buf, sizeof(buf), "m%x", cpu_index(s->query_cpu)); put_packet(s, buf); s->query_cpu = s->query_cpu->next_cpu; s->query_cpu = CPU_NEXT(s->query_cpu); } else put_packet(s, "l"); break; Loading