Lines Matching refs:seg_desc

1544 	struct desc_struct seg_desc, old_desc;  in __load_segment_descriptor()  local
1554 memset(&seg_desc, 0, sizeof seg_desc); in __load_segment_descriptor()
1559 ctxt->ops->get_segment(ctxt, &dummy, &seg_desc, NULL, seg); in __load_segment_descriptor()
1560 set_desc_base(&seg_desc, selector << 4); in __load_segment_descriptor()
1564 set_desc_base(&seg_desc, selector << 4); in __load_segment_descriptor()
1565 set_desc_limit(&seg_desc, 0xffff); in __load_segment_descriptor()
1566 seg_desc.type = 3; in __load_segment_descriptor()
1567 seg_desc.p = 1; in __load_segment_descriptor()
1568 seg_desc.s = 1; in __load_segment_descriptor()
1569 seg_desc.dpl = 3; in __load_segment_descriptor()
1590 ret = read_segment_descriptor(ctxt, selector, &seg_desc, &desc_addr); in __load_segment_descriptor()
1599 if (seg <= VCPU_SREG_GS && !seg_desc.s) { in __load_segment_descriptor()
1605 if (!seg_desc.p) { in __load_segment_descriptor()
1610 dpl = seg_desc.dpl; in __load_segment_descriptor()
1618 if (rpl != cpl || (seg_desc.type & 0xa) != 0x2 || dpl != cpl) in __load_segment_descriptor()
1622 if (!(seg_desc.type & 8)) in __load_segment_descriptor()
1625 if (seg_desc.type & 4) { in __load_segment_descriptor()
1635 if (seg_desc.d && seg_desc.l) { in __load_segment_descriptor()
1647 if (seg_desc.s || (seg_desc.type != 1 && seg_desc.type != 9)) in __load_segment_descriptor()
1649 old_desc = seg_desc; in __load_segment_descriptor()
1650 seg_desc.type |= 2; /* busy */ in __load_segment_descriptor()
1651 ret = ctxt->ops->cmpxchg_emulated(ctxt, desc_addr, &old_desc, &seg_desc, in __load_segment_descriptor()
1652 sizeof(seg_desc), &ctxt->exception); in __load_segment_descriptor()
1657 if (seg_desc.s || seg_desc.type != 2) in __load_segment_descriptor()
1666 if ((seg_desc.type & 0xa) == 0x8 || in __load_segment_descriptor()
1667 (((seg_desc.type & 0xc) != 0xc) && in __load_segment_descriptor()
1673 if (seg_desc.s) { in __load_segment_descriptor()
1675 if (!(seg_desc.type & 1)) { in __load_segment_descriptor()
1676 seg_desc.type |= 1; in __load_segment_descriptor()
1678 &seg_desc); in __load_segment_descriptor()
1687 if (is_noncanonical_address(get_desc_base(&seg_desc) | in __load_segment_descriptor()
1692 ctxt->ops->set_segment(ctxt, selector, &seg_desc, base3, seg); in __load_segment_descriptor()
1694 *desc = seg_desc; in __load_segment_descriptor()