Revision 4fdeee7c cpus.c

b/cpus.c
64 64

  
65 65
static bool cpu_thread_is_idle(CPUArchState *env)
66 66
{
67
    if (env->stop || env->queued_work_first) {
67
    CPUState *cpu = ENV_GET_CPU(env);
68

  
69
    if (cpu->stop || env->queued_work_first) {
68 70
        return false;
69 71
    }
70 72
    if (env->stopped || !runstate_is_running()) {
......
448 450

  
449 451
static int cpu_can_run(CPUArchState *env)
450 452
{
451
    if (env->stop) {
453
    CPUState *cpu = ENV_GET_CPU(env);
454

  
455
    if (cpu->stop) {
452 456
        return 0;
453 457
    }
454 458
    if (env->stopped || !runstate_is_running()) {
......
687 691
{
688 692
    CPUState *cpu = ENV_GET_CPU(env);
689 693

  
690
    if (env->stop) {
691
        env->stop = 0;
694
    if (cpu->stop) {
695
        cpu->stop = false;
692 696
        env->stopped = 1;
693 697
        qemu_cond_signal(&qemu_pause_cond);
694 698
    }
......
941 945

  
942 946
    qemu_clock_enable(vm_clock, false);
943 947
    while (penv) {
944
        penv->stop = 1;
948
        CPUState *pcpu = ENV_GET_CPU(penv);
949
        pcpu->stop = true;
945 950
        qemu_cpu_kick(penv);
946 951
        penv = penv->next_cpu;
947 952
    }
......
950 955
        cpu_stop_current();
951 956
        if (!kvm_enabled()) {
952 957
            while (penv) {
953
                penv->stop = 0;
958
                CPUState *pcpu = ENV_GET_CPU(penv);
959
                pcpu->stop = 0;
954 960
                penv->stopped = 1;
955 961
                penv = penv->next_cpu;
956 962
            }
......
974 980

  
975 981
    qemu_clock_enable(vm_clock, true);
976 982
    while (penv) {
977
        penv->stop = 0;
983
        CPUState *pcpu = ENV_GET_CPU(penv);
984
        pcpu->stop = false;
978 985
        penv->stopped = 0;
979 986
        qemu_cpu_kick(penv);
980 987
        penv = penv->next_cpu;
......
1054 1061
void cpu_stop_current(void)
1055 1062
{
1056 1063
    if (cpu_single_env) {
1057
        cpu_single_env->stop = 0;
1064
        CPUState *cpu_single_cpu = ENV_GET_CPU(cpu_single_env);
1065
        cpu_single_cpu->stop = false;
1058 1066
        cpu_single_env->stopped = 1;
1059 1067
        cpu_exit(cpu_single_env);
1060 1068
        qemu_cond_signal(&qemu_pause_cond);
......
1136 1144
    }
1137 1145
    for (; next_cpu != NULL && !exit_request; next_cpu = next_cpu->next_cpu) {
1138 1146
        CPUArchState *env = next_cpu;
1147
        CPUState *cpu = ENV_GET_CPU(env);
1139 1148

  
1140 1149
        qemu_clock_enable(vm_clock,
1141 1150
                          (env->singlestep_enabled & SSTEP_NOTIMER) == 0);
......
1146 1155
                cpu_handle_guest_debug(env);
1147 1156
                break;
1148 1157
            }
1149
        } else if (env->stop || env->stopped) {
1158
        } else if (cpu->stop || env->stopped) {
1150 1159
            break;
1151 1160
        }
1152 1161
    }

Also available in: Unified diff