Lines Matching defs:sregs

9765 static void __get_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs)
9769 kvm_get_segment(vcpu, &sregs->cs, VCPU_SREG_CS);
9770 kvm_get_segment(vcpu, &sregs->ds, VCPU_SREG_DS);
9771 kvm_get_segment(vcpu, &sregs->es, VCPU_SREG_ES);
9772 kvm_get_segment(vcpu, &sregs->fs, VCPU_SREG_FS);
9773 kvm_get_segment(vcpu, &sregs->gs, VCPU_SREG_GS);
9774 kvm_get_segment(vcpu, &sregs->ss, VCPU_SREG_SS);
9776 kvm_get_segment(vcpu, &sregs->tr, VCPU_SREG_TR);
9777 kvm_get_segment(vcpu, &sregs->ldt, VCPU_SREG_LDTR);
9780 sregs->idt.limit = dt.size;
9781 sregs->idt.base = dt.address;
9783 sregs->gdt.limit = dt.size;
9784 sregs->gdt.base = dt.address;
9786 sregs->cr0 = kvm_read_cr0(vcpu);
9787 sregs->cr2 = vcpu->arch.cr2;
9788 sregs->cr3 = kvm_read_cr3(vcpu);
9789 sregs->cr4 = kvm_read_cr4(vcpu);
9790 sregs->cr8 = kvm_get_cr8(vcpu);
9791 sregs->efer = vcpu->arch.efer;
9792 sregs->apic_base = kvm_get_apic_base(vcpu);
9794 memset(sregs->interrupt_bitmap, 0, sizeof(sregs->interrupt_bitmap));
9798 (unsigned long *)sregs->interrupt_bitmap);
9802 struct kvm_sregs *sregs)
9805 __get_sregs(vcpu, sregs);
9887 static int kvm_valid_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs)
9889 if ((sregs->efer & EFER_LME) && (sregs->cr0 & X86_CR0_PG)) {
9895 if (!(sregs->cr4 & X86_CR4_PAE)
9896 || !(sregs->efer & EFER_LMA))
9898 if (sregs->cr3 & vcpu->arch.cr3_lm_rsvd_bits)
9905 if (sregs->efer & EFER_LMA || sregs->cs.l)
9909 return kvm_valid_cr4(vcpu, sregs->cr4);
9912 static int __set_sregs(struct kvm_vcpu *vcpu, struct kvm_sregs *sregs)
9921 if (kvm_valid_sregs(vcpu, sregs))
9924 apic_base_msr.data = sregs->apic_base;
9929 dt.size = sregs->idt.limit;
9930 dt.address = sregs->idt.base;
9932 dt.size = sregs->gdt.limit;
9933 dt.address = sregs->gdt.base;
9936 vcpu->arch.cr2 = sregs->cr2;
9937 mmu_reset_needed |= kvm_read_cr3(vcpu) != sregs->cr3;
9938 vcpu->arch.cr3 = sregs->cr3;
9941 kvm_set_cr8(vcpu, sregs->cr8);
9943 mmu_reset_needed |= vcpu->arch.efer != sregs->efer;
9944 kvm_x86_ops.set_efer(vcpu, sregs->efer);
9946 mmu_reset_needed |= kvm_read_cr0(vcpu) != sregs->cr0;
9947 kvm_x86_ops.set_cr0(vcpu, sregs->cr0);
9948 vcpu->arch.cr0 = sregs->cr0;
9950 mmu_reset_needed |= kvm_read_cr4(vcpu) != sregs->cr4;
9951 cpuid_update_needed |= ((kvm_read_cr4(vcpu) ^ sregs->cr4) &
9953 kvm_x86_ops.set_cr4(vcpu, sregs->cr4);
9969 (const unsigned long *)sregs->interrupt_bitmap, max_bits);
9975 kvm_set_segment(vcpu, &sregs->cs, VCPU_SREG_CS);
9976 kvm_set_segment(vcpu, &sregs->ds, VCPU_SREG_DS);
9977 kvm_set_segment(vcpu, &sregs->es, VCPU_SREG_ES);
9978 kvm_set_segment(vcpu, &sregs->fs, VCPU_SREG_FS);
9979 kvm_set_segment(vcpu, &sregs->gs, VCPU_SREG_GS);
9980 kvm_set_segment(vcpu, &sregs->ss, VCPU_SREG_SS);
9982 kvm_set_segment(vcpu, &sregs->tr, VCPU_SREG_TR);
9983 kvm_set_segment(vcpu, &sregs->ldt, VCPU_SREG_LDTR);
9989 sregs->cs.selector == 0xf000 && sregs->cs.base == 0xffff0000 &&
10001 struct kvm_sregs *sregs)
10006 ret = __set_sregs(vcpu, sregs);
10141 __get_sregs(vcpu, &vcpu->run->s.regs.sregs);
10158 if (__set_sregs(vcpu, &vcpu->run->s.regs.sregs))