Lines Matching refs:var
423 static u32 vmx_segment_access_rights(struct kvm_segment *var);
2849 struct kvm_segment var = *save; in fix_rmode_seg() local
2851 var.dpl = 0x3; in fix_rmode_seg()
2853 var.type = 0x3; in fix_rmode_seg()
2856 var.selector = var.base >> 4; in fix_rmode_seg()
2857 var.base = var.base & 0xffff0; in fix_rmode_seg()
2858 var.limit = 0xffff; in fix_rmode_seg()
2859 var.g = 0; in fix_rmode_seg()
2860 var.db = 0; in fix_rmode_seg()
2861 var.present = 1; in fix_rmode_seg()
2862 var.s = 1; in fix_rmode_seg()
2863 var.l = 0; in fix_rmode_seg()
2864 var.unusable = 0; in fix_rmode_seg()
2865 var.type = 0x3; in fix_rmode_seg()
2866 var.avl = 0; in fix_rmode_seg()
2873 vmcs_write16(sf->selector, var.selector); in fix_rmode_seg()
2874 vmcs_writel(sf->base, var.base); in fix_rmode_seg()
2875 vmcs_write32(sf->limit, var.limit); in fix_rmode_seg()
2876 vmcs_write32(sf->ar_bytes, vmx_segment_access_rights(&var)); in fix_rmode_seg()
3272 void vmx_get_segment(struct kvm_vcpu *vcpu, struct kvm_segment *var, int seg) in vmx_get_segment() argument
3278 *var = vmx->rmode.segs[seg]; in vmx_get_segment()
3280 || var->selector == vmx_read_guest_seg_selector(vmx, seg)) in vmx_get_segment()
3282 var->base = vmx_read_guest_seg_base(vmx, seg); in vmx_get_segment()
3283 var->selector = vmx_read_guest_seg_selector(vmx, seg); in vmx_get_segment()
3286 var->base = vmx_read_guest_seg_base(vmx, seg); in vmx_get_segment()
3287 var->limit = vmx_read_guest_seg_limit(vmx, seg); in vmx_get_segment()
3288 var->selector = vmx_read_guest_seg_selector(vmx, seg); in vmx_get_segment()
3290 var->unusable = (ar >> 16) & 1; in vmx_get_segment()
3291 var->type = ar & 15; in vmx_get_segment()
3292 var->s = (ar >> 4) & 1; in vmx_get_segment()
3293 var->dpl = (ar >> 5) & 3; in vmx_get_segment()
3301 var->present = !var->unusable; in vmx_get_segment()
3302 var->avl = (ar >> 12) & 1; in vmx_get_segment()
3303 var->l = (ar >> 13) & 1; in vmx_get_segment()
3304 var->db = (ar >> 14) & 1; in vmx_get_segment()
3305 var->g = (ar >> 15) & 1; in vmx_get_segment()
3331 static u32 vmx_segment_access_rights(struct kvm_segment *var) in vmx_segment_access_rights() argument
3335 if (var->unusable || !var->present) in vmx_segment_access_rights()
3338 ar = var->type & 15; in vmx_segment_access_rights()
3339 ar |= (var->s & 1) << 4; in vmx_segment_access_rights()
3340 ar |= (var->dpl & 3) << 5; in vmx_segment_access_rights()
3341 ar |= (var->present & 1) << 7; in vmx_segment_access_rights()
3342 ar |= (var->avl & 1) << 12; in vmx_segment_access_rights()
3343 ar |= (var->l & 1) << 13; in vmx_segment_access_rights()
3344 ar |= (var->db & 1) << 14; in vmx_segment_access_rights()
3345 ar |= (var->g & 1) << 15; in vmx_segment_access_rights()
3351 void vmx_set_segment(struct kvm_vcpu *vcpu, struct kvm_segment *var, int seg) in vmx_set_segment() argument
3359 vmx->rmode.segs[seg] = *var; in vmx_set_segment()
3361 vmcs_write16(sf->selector, var->selector); in vmx_set_segment()
3362 else if (var->s) in vmx_set_segment()
3367 vmcs_writel(sf->base, var->base); in vmx_set_segment()
3368 vmcs_write32(sf->limit, var->limit); in vmx_set_segment()
3369 vmcs_write16(sf->selector, var->selector); in vmx_set_segment()
3383 var->type |= 0x1; /* Accessed */ in vmx_set_segment()
3385 vmcs_write32(sf->ar_bytes, vmx_segment_access_rights(var)); in vmx_set_segment()
3425 struct kvm_segment var; in rmode_segment_valid() local
3428 vmx_get_segment(vcpu, &var, seg); in rmode_segment_valid()
3429 var.dpl = 0x3; in rmode_segment_valid()
3431 var.type = 0x3; in rmode_segment_valid()
3432 ar = vmx_segment_access_rights(&var); in rmode_segment_valid()
3434 if (var.base != (var.selector << 4)) in rmode_segment_valid()
3436 if (var.limit != 0xffff) in rmode_segment_valid()
3496 struct kvm_segment var; in data_segment_valid() local
3499 vmx_get_segment(vcpu, &var, seg); in data_segment_valid()
3500 rpl = var.selector & SEGMENT_RPL_MASK; in data_segment_valid()
3502 if (var.unusable) in data_segment_valid()
3504 if (!var.s) in data_segment_valid()
3506 if (!var.present) in data_segment_valid()
3508 if (~var.type & (VMX_AR_TYPE_CODE_MASK|VMX_AR_TYPE_WRITEABLE_MASK)) { in data_segment_valid()
3509 if (var.dpl < rpl) /* DPL < RPL */ in data_segment_valid()