Commit 02536f8b1f94a701ac3ef8016741fe01cc68cff2
1 parent
06c2f506
x86_64 save/restore
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1200 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
28 additions
and
0 deletions
vl.c
| ... | ... | @@ -2138,6 +2138,20 @@ void cpu_save(QEMUFile *f, void *opaque) |
| 2138 | 2138 | |
| 2139 | 2139 | /* MMU */ |
| 2140 | 2140 | qemu_put_be32s(f, &env->a20_mask); |
| 2141 | + | |
| 2142 | +#ifdef TARGET_X86_64 | |
| 2143 | + for(i = 0; i < CPU_NB_REGS; i++) { | |
| 2144 | + qemu_put_be64s(f, &env->xmm_regs[i].XMM_Q(0)); | |
| 2145 | + qemu_put_be64s(f, &env->xmm_regs[i].XMM_Q(1)); | |
| 2146 | + } | |
| 2147 | + | |
| 2148 | + qemu_put_be64s(f, &env->efer); | |
| 2149 | + qemu_put_be64s(f, &env->star); | |
| 2150 | + qemu_put_be64s(f, &env->lstar); | |
| 2151 | + qemu_put_be64s(f, &env->cstar); | |
| 2152 | + qemu_put_be64s(f, &env->fmask); | |
| 2153 | + qemu_put_be64s(f, &env->kernelgsbase); | |
| 2154 | +#endif | |
| 2141 | 2155 | } |
| 2142 | 2156 | |
| 2143 | 2157 | int cpu_load(QEMUFile *f, void *opaque, int version_id) |
| ... | ... | @@ -2198,6 +2212,20 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id) |
| 2198 | 2212 | /* MMU */ |
| 2199 | 2213 | qemu_get_be32s(f, &env->a20_mask); |
| 2200 | 2214 | |
| 2215 | +#ifdef TARGET_X86_64 | |
| 2216 | + for(i = 0; i < CPU_NB_REGS; i++) { | |
| 2217 | + qemu_get_be64s(f, &env->xmm_regs[i].XMM_Q(0)); | |
| 2218 | + qemu_get_be64s(f, &env->xmm_regs[i].XMM_Q(1)); | |
| 2219 | + } | |
| 2220 | + | |
| 2221 | + qemu_get_be64s(f, &env->efer); | |
| 2222 | + qemu_get_be64s(f, &env->star); | |
| 2223 | + qemu_get_be64s(f, &env->lstar); | |
| 2224 | + qemu_get_be64s(f, &env->cstar); | |
| 2225 | + qemu_get_be64s(f, &env->fmask); | |
| 2226 | + qemu_get_be64s(f, &env->kernelgsbase); | |
| 2227 | +#endif | |
| 2228 | + | |
| 2201 | 2229 | /* XXX: compute hflags from scratch, except for CPL and IIF */ |
| 2202 | 2230 | env->hflags = hflags; |
| 2203 | 2231 | tlb_flush(env, 1); | ... | ... |