Changeset 9421 in vbox for trunk/src/recompiler/VBoxRecompiler.c
- Timestamp:
- Jun 5, 2008 1:17:00 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 31661
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/recompiler/VBoxRecompiler.c
r9415 r9421 1109 1109 1110 1110 Ctx.tr = env->tr.selector; 1111 Ctx.trHid.u 32Base = (uint32_t)env->tr.base;1111 Ctx.trHid.u64Base = env->tr.base; 1112 1112 Ctx.trHid.u32Limit = env->tr.limit; 1113 1113 Ctx.trHid.Attr.u = (env->tr.flags >> 8) & 0xF0FF; 1114 1114 1115 1115 Ctx.idtr.cbIdt = env->idt.limit; 1116 Ctx.idtr.pIdt = (uint32_t)env->idt.base;1116 Ctx.idtr.pIdt = env->idt.base; 1117 1117 1118 1118 Ctx.eflags.u32 = env->eflags; 1119 1119 1120 1120 Ctx.cs = env->segs[R_CS].selector; 1121 Ctx.csHid.u 32Base = (uint32_t)env->segs[R_CS].base;1121 Ctx.csHid.u64Base = env->segs[R_CS].base; 1122 1122 Ctx.csHid.u32Limit = env->segs[R_CS].limit; 1123 1123 Ctx.csHid.Attr.u = (env->segs[R_CS].flags >> 8) & 0xF0FF; 1124 1124 1125 1125 Ctx.ss = env->segs[R_SS].selector; 1126 Ctx.ssHid.u 32Base = (uint32_t)env->segs[R_SS].base;1126 Ctx.ssHid.u64Base = env->segs[R_SS].base; 1127 1127 Ctx.ssHid.u32Limit = env->segs[R_SS].limit; 1128 1128 Ctx.ssHid.Attr.u = (env->segs[R_SS].flags >> 8) & 0xF0FF; … … 1753 1753 { 1754 1754 pVM->rem.s.Env.ldt.selector = pCtx->ldtr; 1755 pVM->rem.s.Env.ldt.base = pCtx->ldtrHid.u 32Base;1755 pVM->rem.s.Env.ldt.base = pCtx->ldtrHid.u64Base; 1756 1756 pVM->rem.s.Env.ldt.limit = pCtx->ldtrHid.u32Limit; 1757 1757 pVM->rem.s.Env.ldt.flags = (pCtx->ldtrHid.Attr.u << 8) & 0xFFFFFF;; … … 1766 1766 { 1767 1767 pVM->rem.s.Env.tr.selector = pCtx->tr; 1768 pVM->rem.s.Env.tr.base = pCtx->trHid.u 32Base;1768 pVM->rem.s.Env.tr.base = pCtx->trHid.u64Base; 1769 1769 pVM->rem.s.Env.tr.limit = pCtx->trHid.u32Limit; 1770 1770 pVM->rem.s.Env.tr.flags = (pCtx->trHid.Attr.u << 8) & 0xFFFFFF;; … … 1808 1808 cpu_x86_set_cpl(&pVM->rem.s.Env, CPUMGetGuestCPL(pVM, CPUMCTX2CORE(pCtx))); 1809 1809 1810 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_CS, pCtx->cs, pCtx->csHid.u 32Base, pCtx->csHid.u32Limit, (pCtx->csHid.Attr.u << 8) & 0xFFFFFF);1811 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_SS, pCtx->ss, pCtx->ssHid.u 32Base, pCtx->ssHid.u32Limit, (pCtx->ssHid.Attr.u << 8) & 0xFFFFFF);1812 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_DS, pCtx->ds, pCtx->dsHid.u 32Base, pCtx->dsHid.u32Limit, (pCtx->dsHid.Attr.u << 8) & 0xFFFFFF);1813 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_ES, pCtx->es, pCtx->esHid.u 32Base, pCtx->esHid.u32Limit, (pCtx->esHid.Attr.u << 8) & 0xFFFFFF);1814 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_FS, pCtx->fs, pCtx->fsHid.u 32Base, pCtx->fsHid.u32Limit, (pCtx->fsHid.Attr.u << 8) & 0xFFFFFF);1815 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_GS, pCtx->gs, pCtx->gsHid.u 32Base, pCtx->gsHid.u32Limit, (pCtx->gsHid.Attr.u << 8) & 0xFFFFFF);1810 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_CS, pCtx->cs, pCtx->csHid.u64Base, pCtx->csHid.u32Limit, (pCtx->csHid.Attr.u << 8) & 0xFFFFFF); 1811 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_SS, pCtx->ss, pCtx->ssHid.u64Base, pCtx->ssHid.u32Limit, (pCtx->ssHid.Attr.u << 8) & 0xFFFFFF); 1812 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_DS, pCtx->ds, pCtx->dsHid.u64Base, pCtx->dsHid.u32Limit, (pCtx->dsHid.Attr.u << 8) & 0xFFFFFF); 1813 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_ES, pCtx->es, pCtx->esHid.u64Base, pCtx->esHid.u32Limit, (pCtx->esHid.Attr.u << 8) & 0xFFFFFF); 1814 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_FS, pCtx->fs, pCtx->fsHid.u64Base, pCtx->fsHid.u32Limit, (pCtx->fsHid.Attr.u << 8) & 0xFFFFFF); 1815 cpu_x86_load_seg_cache(&pVM->rem.s.Env, R_GS, pCtx->gs, pCtx->gsHid.u64Base, pCtx->gsHid.u32Limit, (pCtx->gsHid.Attr.u << 8) & 0xFFFFFF); 1816 1816 } 1817 1817 else … … 2165 2165 2166 2166 /** @todo These values could still be out of sync! */ 2167 pCtx->csHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_CS].base;2167 pCtx->csHid.u64Base = pVM->rem.s.Env.segs[R_CS].base; 2168 2168 pCtx->csHid.u32Limit = pVM->rem.s.Env.segs[R_CS].limit; 2169 2169 /** @note QEmu saves the 2nd dword of the descriptor; we should store the attribute word only! */ 2170 2170 pCtx->csHid.Attr.u = (pVM->rem.s.Env.segs[R_CS].flags >> 8) & 0xF0FF; 2171 2171 2172 pCtx->dsHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_DS].base;2172 pCtx->dsHid.u64Base = pVM->rem.s.Env.segs[R_DS].base; 2173 2173 pCtx->dsHid.u32Limit = pVM->rem.s.Env.segs[R_DS].limit; 2174 2174 pCtx->dsHid.Attr.u = (pVM->rem.s.Env.segs[R_DS].flags >> 8) & 0xF0FF; 2175 2175 2176 pCtx->esHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_ES].base;2176 pCtx->esHid.u64Base = pVM->rem.s.Env.segs[R_ES].base; 2177 2177 pCtx->esHid.u32Limit = pVM->rem.s.Env.segs[R_ES].limit; 2178 2178 pCtx->esHid.Attr.u = (pVM->rem.s.Env.segs[R_ES].flags >> 8) & 0xF0FF; 2179 2179 2180 pCtx->fsHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_FS].base;2180 pCtx->fsHid.u64Base = pVM->rem.s.Env.segs[R_FS].base; 2181 2181 pCtx->fsHid.u32Limit = pVM->rem.s.Env.segs[R_FS].limit; 2182 2182 pCtx->fsHid.Attr.u = (pVM->rem.s.Env.segs[R_FS].flags >> 8) & 0xF0FF; 2183 2183 2184 pCtx->gsHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_GS].base;2184 pCtx->gsHid.u64Base = pVM->rem.s.Env.segs[R_GS].base; 2185 2185 pCtx->gsHid.u32Limit = pVM->rem.s.Env.segs[R_GS].limit; 2186 2186 pCtx->gsHid.Attr.u = (pVM->rem.s.Env.segs[R_GS].flags >> 8) & 0xF0FF; 2187 2187 2188 pCtx->ssHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_SS].base;2188 pCtx->ssHid.u64Base = pVM->rem.s.Env.segs[R_SS].base; 2189 2189 pCtx->ssHid.u32Limit = pVM->rem.s.Env.segs[R_SS].limit; 2190 2190 pCtx->ssHid.Attr.u = (pVM->rem.s.Env.segs[R_SS].flags >> 8) & 0xF0FF; 2191 2191 2192 pCtx->ldtrHid.u 32Base = (uint32_t)pVM->rem.s.Env.ldt.base;2192 pCtx->ldtrHid.u64Base = pVM->rem.s.Env.ldt.base; 2193 2193 pCtx->ldtrHid.u32Limit = pVM->rem.s.Env.ldt.limit; 2194 2194 pCtx->ldtrHid.Attr.u = (pVM->rem.s.Env.ldt.flags >> 8) & 0xF0FF; 2195 2195 2196 pCtx->trHid.u 32Base = (uint32_t)pVM->rem.s.Env.tr.base;2196 pCtx->trHid.u64Base = pVM->rem.s.Env.tr.base; 2197 2197 pCtx->trHid.u32Limit = pVM->rem.s.Env.tr.limit; 2198 2198 pCtx->trHid.Attr.u = (pVM->rem.s.Env.tr.flags >> 8) & 0xF0FF; … … 2367 2367 2368 2368 /** @todo These values could still be out of sync! */ 2369 pCtx->csHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_CS].base;2369 pCtx->csHid.u64Base = pVM->rem.s.Env.segs[R_CS].base; 2370 2370 pCtx->csHid.u32Limit = pVM->rem.s.Env.segs[R_CS].limit; 2371 2371 /** @note QEmu saves the 2nd dword of the descriptor; we should store the attribute word only! */ 2372 2372 pCtx->csHid.Attr.u = (pVM->rem.s.Env.segs[R_CS].flags >> 8) & 0xFFFF; 2373 2373 2374 pCtx->dsHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_DS].base;2374 pCtx->dsHid.u64Base = pVM->rem.s.Env.segs[R_DS].base; 2375 2375 pCtx->dsHid.u32Limit = pVM->rem.s.Env.segs[R_DS].limit; 2376 2376 pCtx->dsHid.Attr.u = (pVM->rem.s.Env.segs[R_DS].flags >> 8) & 0xFFFF; 2377 2377 2378 pCtx->esHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_ES].base;2378 pCtx->esHid.u64Base = pVM->rem.s.Env.segs[R_ES].base; 2379 2379 pCtx->esHid.u32Limit = pVM->rem.s.Env.segs[R_ES].limit; 2380 2380 pCtx->esHid.Attr.u = (pVM->rem.s.Env.segs[R_ES].flags >> 8) & 0xFFFF; 2381 2381 2382 pCtx->fsHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_FS].base;2382 pCtx->fsHid.u64Base = pVM->rem.s.Env.segs[R_FS].base; 2383 2383 pCtx->fsHid.u32Limit = pVM->rem.s.Env.segs[R_FS].limit; 2384 2384 pCtx->fsHid.Attr.u = (pVM->rem.s.Env.segs[R_FS].flags >> 8) & 0xFFFF; 2385 2385 2386 pCtx->gsHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_GS].base;2386 pCtx->gsHid.u64Base = pVM->rem.s.Env.segs[R_GS].base; 2387 2387 pCtx->gsHid.u32Limit = pVM->rem.s.Env.segs[R_GS].limit; 2388 2388 pCtx->gsHid.Attr.u = (pVM->rem.s.Env.segs[R_GS].flags >> 8) & 0xFFFF; 2389 2389 2390 pCtx->ssHid.u 32Base = (uint32_t)pVM->rem.s.Env.segs[R_SS].base;2390 pCtx->ssHid.u64Base = pVM->rem.s.Env.segs[R_SS].base; 2391 2391 pCtx->ssHid.u32Limit = pVM->rem.s.Env.segs[R_SS].limit; 2392 2392 pCtx->ssHid.Attr.u = (pVM->rem.s.Env.segs[R_SS].flags >> 8) & 0xFFFF; 2393 2393 2394 pCtx->ldtrHid.u 32Base = (uint32_t)pVM->rem.s.Env.ldt.base;2394 pCtx->ldtrHid.u64Base = pVM->rem.s.Env.ldt.base; 2395 2395 pCtx->ldtrHid.u32Limit = pVM->rem.s.Env.ldt.limit; 2396 2396 pCtx->ldtrHid.Attr.u = (pVM->rem.s.Env.ldt.flags >> 8) & 0xFFFF; 2397 2397 2398 pCtx->trHid.u 32Base = (uint32_t)pVM->rem.s.Env.tr.base;2398 pCtx->trHid.u64Base = pVM->rem.s.Env.tr.base; 2399 2399 pCtx->trHid.u32Limit = pVM->rem.s.Env.tr.limit; 2400 2400 pCtx->trHid.Attr.u = (pVM->rem.s.Env.tr.flags >> 8) & 0xFFFF;
Note:
See TracChangeset
for help on using the changeset viewer.