Lines Matching defs:desc
603 static u32 desc_limit_scaled(struct desc_struct *desc)
605 u32 limit = get_desc_limit(desc);
607 return desc->g ? (limit << 12) | 0xfff : limit;
666 struct desc_struct desc;
668 ctxt->ops->get_segment(ctxt, &selector, &desc, NULL, seg);
677 struct desc_struct desc;
679 ctxt->ops->get_segment(ctxt, &dummy, &desc, &base3, seg);
680 ctxt->ops->set_segment(ctxt, selector, &desc, base3, seg);
728 struct desc_struct desc;
750 usable = ctxt->ops->get_segment(ctxt, &sel, &desc, NULL,
755 if ((((ctxt->mode != X86EMUL_MODE_REAL) && (desc.type & 8))
756 || !(desc.type & 2)) && write)
759 if (!fetch && (desc.type & 8) && !(desc.type & 2))
761 lim = desc_limit_scaled(&desc);
762 if (!(desc.type & 8) && (desc.type & 4)) {
766 lim = desc.d ? 0xffffffff : 0xffff;
1594 u16 index, struct desc_struct *desc)
1605 return linear_read_system(ctxt, addr, desc, sizeof(*desc));
1615 struct desc_struct desc;
1619 if (!ops->get_segment(ctxt, &sel, &desc, &base3,
1623 dt->size = desc_limit_scaled(&desc); /* what if limit > 65535? */
1624 dt->address = get_desc_base(&desc) | ((u64)base3 << 32);
1659 u16 selector, struct desc_struct *desc,
1668 return linear_read_system(ctxt, *desc_addr_p, desc, sizeof(*desc));
1673 u16 selector, struct desc_struct *desc)
1682 return linear_write_system(ctxt, addr, desc, sizeof(*desc));
1688 struct desc_struct *desc)
1855 if (desc)
1856 *desc = seg_desc;
2437 static void rsm_set_desc_flags(struct desc_struct *desc, u32 flags)
2439 desc->g = (flags >> 23) & 1;
2440 desc->d = (flags >> 22) & 1;
2441 desc->l = (flags >> 21) & 1;
2442 desc->avl = (flags >> 20) & 1;
2443 desc->p = (flags >> 15) & 1;
2444 desc->dpl = (flags >> 13) & 3;
2445 desc->s = (flags >> 12) & 1;
2446 desc->type = (flags >> 8) & 15;
2452 struct desc_struct desc;
2463 set_desc_base(&desc, GET_SMSTATE(u32, smstate, offset + 8));
2464 set_desc_limit(&desc, GET_SMSTATE(u32, smstate, offset + 4));
2465 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, offset));
2466 ctxt->ops->set_segment(ctxt, selector, &desc, 0, n);
2474 struct desc_struct desc;
2482 rsm_set_desc_flags(&desc, GET_SMSTATE(u16, smstate, offset + 2) << 8);
2483 set_desc_limit(&desc, GET_SMSTATE(u32, smstate, offset + 4));
2484 set_desc_base(&desc, GET_SMSTATE(u32, smstate, offset + 8));
2487 ctxt->ops->set_segment(ctxt, selector, &desc, base3, n);
2540 struct desc_struct desc;
2565 set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7f64));
2566 set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7f60));
2567 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7f5c));
2568 ctxt->ops->set_segment(ctxt, selector, &desc, 0, VCPU_SREG_TR);
2571 set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7f80));
2572 set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7f7c));
2573 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7f78));
2574 ctxt->ops->set_segment(ctxt, selector, &desc, 0, VCPU_SREG_LDTR);
2601 struct desc_struct desc;
2634 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7e92) << 8);
2635 set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7e94));
2636 set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7e98));
2638 ctxt->ops->set_segment(ctxt, selector, &desc, base3, VCPU_SREG_TR);
2645 rsm_set_desc_flags(&desc, GET_SMSTATE(u32, smstate, 0x7e72) << 8);
2646 set_desc_limit(&desc, GET_SMSTATE(u32, smstate, 0x7e74));
2647 set_desc_base(&desc, GET_SMSTATE(u32, smstate, 0x7e78));
2649 ctxt->ops->set_segment(ctxt, selector, &desc, base3, VCPU_SREG_LDTR);
5187 struct desc_struct desc;
5208 ctxt->ops->get_segment(ctxt, &dummy, &desc, NULL, VCPU_SREG_CS);
5209 if (desc.d)