Commit 02536f8b1f94a701ac3ef8016741fe01cc68cff2

Authored by bellard
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
... ... @@ -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);
... ...