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,6 +2138,20 @@ void cpu_save(QEMUFile *f, void *opaque) | ||
| 2138 | 2138 | ||
| 2139 | /* MMU */ | 2139 | /* MMU */ |
| 2140 | qemu_put_be32s(f, &env->a20_mask); | 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 | int cpu_load(QEMUFile *f, void *opaque, int version_id) | 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,6 +2212,20 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id) | ||
| 2198 | /* MMU */ | 2212 | /* MMU */ |
| 2199 | qemu_get_be32s(f, &env->a20_mask); | 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 | /* XXX: compute hflags from scratch, except for CPL and IIF */ | 2229 | /* XXX: compute hflags from scratch, except for CPL and IIF */ |
| 2202 | env->hflags = hflags; | 2230 | env->hflags = hflags; |
| 2203 | tlb_flush(env, 1); | 2231 | tlb_flush(env, 1); |