Lines Matching refs:smbase
2272 #define GET_SMSTATE(type, smbase, offset) \ argument
2275 int r = ctxt->ops->read_phys(ctxt, smbase + offset, &__val, \
2294 static int rsm_load_seg_32(struct x86_emulate_ctxt *ctxt, u64 smbase, int n) in rsm_load_seg_32() argument
2300 selector = GET_SMSTATE(u32, smbase, 0x7fa8 + n * 4); in rsm_load_seg_32()
2307 set_desc_base(&desc, GET_SMSTATE(u32, smbase, offset + 8)); in rsm_load_seg_32()
2308 set_desc_limit(&desc, GET_SMSTATE(u32, smbase, offset + 4)); in rsm_load_seg_32()
2309 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smbase, offset)); in rsm_load_seg_32()
2314 static int rsm_load_seg_64(struct x86_emulate_ctxt *ctxt, u64 smbase, int n) in rsm_load_seg_64() argument
2323 selector = GET_SMSTATE(u16, smbase, offset); in rsm_load_seg_64()
2324 rsm_set_desc_flags(&desc, GET_SMSTATE(u16, smbase, offset + 2) << 8); in rsm_load_seg_64()
2325 set_desc_limit(&desc, GET_SMSTATE(u32, smbase, offset + 4)); in rsm_load_seg_64()
2326 set_desc_base(&desc, GET_SMSTATE(u32, smbase, offset + 8)); in rsm_load_seg_64()
2327 base3 = GET_SMSTATE(u32, smbase, offset + 12); in rsm_load_seg_64()
2360 static int rsm_load_state_32(struct x86_emulate_ctxt *ctxt, u64 smbase) in rsm_load_state_32() argument
2368 cr0 = GET_SMSTATE(u32, smbase, 0x7ffc); in rsm_load_state_32()
2369 ctxt->ops->set_cr(ctxt, 3, GET_SMSTATE(u32, smbase, 0x7ff8)); in rsm_load_state_32()
2370 ctxt->eflags = GET_SMSTATE(u32, smbase, 0x7ff4) | X86_EFLAGS_FIXED; in rsm_load_state_32()
2371 ctxt->_eip = GET_SMSTATE(u32, smbase, 0x7ff0); in rsm_load_state_32()
2374 *reg_write(ctxt, i) = GET_SMSTATE(u32, smbase, 0x7fd0 + i * 4); in rsm_load_state_32()
2376 val = GET_SMSTATE(u32, smbase, 0x7fcc); in rsm_load_state_32()
2378 val = GET_SMSTATE(u32, smbase, 0x7fc8); in rsm_load_state_32()
2381 selector = GET_SMSTATE(u32, smbase, 0x7fc4); in rsm_load_state_32()
2382 set_desc_base(&desc, GET_SMSTATE(u32, smbase, 0x7f64)); in rsm_load_state_32()
2383 set_desc_limit(&desc, GET_SMSTATE(u32, smbase, 0x7f60)); in rsm_load_state_32()
2384 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smbase, 0x7f5c)); in rsm_load_state_32()
2387 selector = GET_SMSTATE(u32, smbase, 0x7fc0); in rsm_load_state_32()
2388 set_desc_base(&desc, GET_SMSTATE(u32, smbase, 0x7f80)); in rsm_load_state_32()
2389 set_desc_limit(&desc, GET_SMSTATE(u32, smbase, 0x7f7c)); in rsm_load_state_32()
2390 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smbase, 0x7f78)); in rsm_load_state_32()
2393 dt.address = GET_SMSTATE(u32, smbase, 0x7f74); in rsm_load_state_32()
2394 dt.size = GET_SMSTATE(u32, smbase, 0x7f70); in rsm_load_state_32()
2397 dt.address = GET_SMSTATE(u32, smbase, 0x7f58); in rsm_load_state_32()
2398 dt.size = GET_SMSTATE(u32, smbase, 0x7f54); in rsm_load_state_32()
2402 int r = rsm_load_seg_32(ctxt, smbase, i); in rsm_load_state_32()
2407 cr4 = GET_SMSTATE(u32, smbase, 0x7f14); in rsm_load_state_32()
2409 ctxt->ops->set_smbase(ctxt, GET_SMSTATE(u32, smbase, 0x7ef8)); in rsm_load_state_32()
2414 static int rsm_load_state_64(struct x86_emulate_ctxt *ctxt, u64 smbase) in rsm_load_state_64() argument
2424 *reg_write(ctxt, i) = GET_SMSTATE(u64, smbase, 0x7ff8 - i * 8); in rsm_load_state_64()
2426 ctxt->_eip = GET_SMSTATE(u64, smbase, 0x7f78); in rsm_load_state_64()
2427 ctxt->eflags = GET_SMSTATE(u32, smbase, 0x7f70) | X86_EFLAGS_FIXED; in rsm_load_state_64()
2429 val = GET_SMSTATE(u32, smbase, 0x7f68); in rsm_load_state_64()
2431 val = GET_SMSTATE(u32, smbase, 0x7f60); in rsm_load_state_64()
2434 cr0 = GET_SMSTATE(u64, smbase, 0x7f58); in rsm_load_state_64()
2435 ctxt->ops->set_cr(ctxt, 3, GET_SMSTATE(u64, smbase, 0x7f50)); in rsm_load_state_64()
2436 cr4 = GET_SMSTATE(u64, smbase, 0x7f48); in rsm_load_state_64()
2437 ctxt->ops->set_smbase(ctxt, GET_SMSTATE(u32, smbase, 0x7f00)); in rsm_load_state_64()
2438 val = GET_SMSTATE(u64, smbase, 0x7ed0); in rsm_load_state_64()
2441 selector = GET_SMSTATE(u32, smbase, 0x7e90); in rsm_load_state_64()
2442 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smbase, 0x7e92) << 8); in rsm_load_state_64()
2443 set_desc_limit(&desc, GET_SMSTATE(u32, smbase, 0x7e94)); in rsm_load_state_64()
2444 set_desc_base(&desc, GET_SMSTATE(u32, smbase, 0x7e98)); in rsm_load_state_64()
2445 base3 = GET_SMSTATE(u32, smbase, 0x7e9c); in rsm_load_state_64()
2448 dt.size = GET_SMSTATE(u32, smbase, 0x7e84); in rsm_load_state_64()
2449 dt.address = GET_SMSTATE(u64, smbase, 0x7e88); in rsm_load_state_64()
2452 selector = GET_SMSTATE(u32, smbase, 0x7e70); in rsm_load_state_64()
2453 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smbase, 0x7e72) << 8); in rsm_load_state_64()
2454 set_desc_limit(&desc, GET_SMSTATE(u32, smbase, 0x7e74)); in rsm_load_state_64()
2455 set_desc_base(&desc, GET_SMSTATE(u32, smbase, 0x7e78)); in rsm_load_state_64()
2456 base3 = GET_SMSTATE(u32, smbase, 0x7e7c); in rsm_load_state_64()
2459 dt.size = GET_SMSTATE(u32, smbase, 0x7e64); in rsm_load_state_64()
2460 dt.address = GET_SMSTATE(u64, smbase, 0x7e68); in rsm_load_state_64()
2468 r = rsm_load_seg_64(ctxt, smbase, i); in rsm_load_state_64()
2479 u64 smbase; in em_rsm() local
2520 smbase = ctxt->ops->get_smbase(ctxt); in em_rsm()
2522 ret = rsm_load_state_64(ctxt, smbase + 0x8000); in em_rsm()
2524 ret = rsm_load_state_32(ctxt, smbase + 0x8000); in em_rsm()