Revision 9ee6e8bb vl.c

b/vl.c
6126 6126
    qemu_put_be32(f, env->cp15.c1_sys);
6127 6127
    qemu_put_be32(f, env->cp15.c1_coproc);
6128 6128
    qemu_put_be32(f, env->cp15.c1_xscaleauxcr);
6129
    qemu_put_be32(f, env->cp15.c2_base);
6129
    qemu_put_be32(f, env->cp15.c2_base0);
6130
    qemu_put_be32(f, env->cp15.c2_base1);
6131
    qemu_put_be32(f, env->cp15.c2_mask);
6130 6132
    qemu_put_be32(f, env->cp15.c2_data);
6131 6133
    qemu_put_be32(f, env->cp15.c2_insn);
6132 6134
    qemu_put_be32(f, env->cp15.c3);
......
6141 6143
    qemu_put_be32(f, env->cp15.c9_data);
6142 6144
    qemu_put_be32(f, env->cp15.c13_fcse);
6143 6145
    qemu_put_be32(f, env->cp15.c13_context);
6146
    qemu_put_be32(f, env->cp15.c13_tls1);
6147
    qemu_put_be32(f, env->cp15.c13_tls2);
6148
    qemu_put_be32(f, env->cp15.c13_tls3);
6144 6149
    qemu_put_be32(f, env->cp15.c15_cpar);
6145 6150

  
6146 6151
    qemu_put_be32(f, env->features);
......
6159 6164
        /* TODO: Should use proper FPSCR access functions.  */
6160 6165
        qemu_put_be32(f, env->vfp.vec_len);
6161 6166
        qemu_put_be32(f, env->vfp.vec_stride);
6167

  
6168
        if (arm_feature(env, ARM_FEATURE_VFP3)) {
6169
            for (i = 16;  i < 32; i++) {
6170
                CPU_DoubleU u;
6171
                u.d = env->vfp.regs[i];
6172
                qemu_put_be32(f, u.l.upper);
6173
                qemu_put_be32(f, u.l.lower);
6174
            }
6175
        }
6162 6176
    }
6163 6177

  
6164 6178
    if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
......
6169 6183
            qemu_put_be32(f, env->iwmmxt.cregs[i]);
6170 6184
        }
6171 6185
    }
6186

  
6187
    if (arm_feature(env, ARM_FEATURE_M)) {
6188
        qemu_put_be32(f, env->v7m.other_sp);
6189
        qemu_put_be32(f, env->v7m.vecbase);
6190
        qemu_put_be32(f, env->v7m.basepri);
6191
        qemu_put_be32(f, env->v7m.control);
6192
        qemu_put_be32(f, env->v7m.current_sp);
6193
        qemu_put_be32(f, env->v7m.exception);
6194
    }
6172 6195
}
6173 6196

  
6174 6197
int cpu_load(QEMUFile *f, void *opaque, int version_id)
......
6176 6199
    CPUARMState *env = (CPUARMState *)opaque;
6177 6200
    int i;
6178 6201

  
6179
    if (version_id != 0)
6202
    if (version_id != ARM_CPU_SAVE_VERSION)
6180 6203
        return -EINVAL;
6181 6204

  
6182 6205
    for (i = 0; i < 16; i++) {
......
6198 6221
    env->cp15.c1_sys = qemu_get_be32(f);
6199 6222
    env->cp15.c1_coproc = qemu_get_be32(f);
6200 6223
    env->cp15.c1_xscaleauxcr = qemu_get_be32(f);
6201
    env->cp15.c2_base = qemu_get_be32(f);
6224
    env->cp15.c2_base0 = qemu_get_be32(f);
6225
    env->cp15.c2_base1 = qemu_get_be32(f);
6226
    env->cp15.c2_mask = qemu_get_be32(f);
6202 6227
    env->cp15.c2_data = qemu_get_be32(f);
6203 6228
    env->cp15.c2_insn = qemu_get_be32(f);
6204 6229
    env->cp15.c3 = qemu_get_be32(f);
......
6213 6238
    env->cp15.c9_data = qemu_get_be32(f);
6214 6239
    env->cp15.c13_fcse = qemu_get_be32(f);
6215 6240
    env->cp15.c13_context = qemu_get_be32(f);
6241
    env->cp15.c13_tls1 = qemu_get_be32(f);
6242
    env->cp15.c13_tls2 = qemu_get_be32(f);
6243
    env->cp15.c13_tls3 = qemu_get_be32(f);
6216 6244
    env->cp15.c15_cpar = qemu_get_be32(f);
6217 6245

  
6218 6246
    env->features = qemu_get_be32(f);
......
6231 6259
        /* TODO: Should use proper FPSCR access functions.  */
6232 6260
        env->vfp.vec_len = qemu_get_be32(f);
6233 6261
        env->vfp.vec_stride = qemu_get_be32(f);
6262

  
6263
        if (arm_feature(env, ARM_FEATURE_VFP3)) {
6264
            for (i = 0;  i < 16; i++) {
6265
                CPU_DoubleU u;
6266
                u.l.upper = qemu_get_be32(f);
6267
                u.l.lower = qemu_get_be32(f);
6268
                env->vfp.regs[i] = u.d;
6269
            }
6270
        }
6234 6271
    }
6235 6272

  
6236 6273
    if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
......
6242 6279
        }
6243 6280
    }
6244 6281

  
6282
    if (arm_feature(env, ARM_FEATURE_M)) {
6283
        env->v7m.other_sp = qemu_get_be32(f);
6284
        env->v7m.vecbase = qemu_get_be32(f);
6285
        env->v7m.basepri = qemu_get_be32(f);
6286
        env->v7m.control = qemu_get_be32(f);
6287
        env->v7m.current_sp = qemu_get_be32(f);
6288
        env->v7m.exception = qemu_get_be32(f);
6289
    }
6290

  
6245 6291
    return 0;
6246 6292
}
6247 6293

  
......
7392 7438
    qemu_register_machine(&borzoipda_machine);
7393 7439
    qemu_register_machine(&terrierpda_machine);
7394 7440
    qemu_register_machine(&palmte_machine);
7441
    qemu_register_machine(&lm3s811evb_machine);
7442
    qemu_register_machine(&lm3s6965evb_machine);
7395 7443
#elif defined(TARGET_SH4)
7396 7444
    qemu_register_machine(&shix_machine);
7397 7445
    qemu_register_machine(&r2d_machine);

Also available in: Unified diff