KVM: x86: use kvm_get_gdt() and kvm_read_ldt()
Use kvm_get_gdt() and kvm_read_ldt() to reduce inline assembly code. Cc: Avi Kivity <avi@redhat.com> Cc: kvm@vger.kernel.org Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
46a359e715
commit
b792c344df
2 changed files with 5 additions and 6 deletions
|
@ -290,7 +290,7 @@ static void svm_hardware_enable(void *garbage)
|
|||
|
||||
struct svm_cpu_data *svm_data;
|
||||
uint64_t efer;
|
||||
struct desc_ptr gdt_descr;
|
||||
struct descriptor_table gdt_descr;
|
||||
struct desc_struct *gdt;
|
||||
int me = raw_smp_processor_id();
|
||||
|
||||
|
@ -310,8 +310,8 @@ static void svm_hardware_enable(void *garbage)
|
|||
svm_data->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1;
|
||||
svm_data->next_asid = svm_data->max_asid + 1;
|
||||
|
||||
asm volatile ("sgdt %0" : "=m"(gdt_descr));
|
||||
gdt = (struct desc_struct *)gdt_descr.address;
|
||||
kvm_get_gdt(&gdt_descr);
|
||||
gdt = (struct desc_struct *)gdt_descr.base;
|
||||
svm_data->tss_desc = (struct kvm_ldttss_desc *)(gdt + GDT_ENTRY_TSS);
|
||||
|
||||
rdmsrl(MSR_EFER, efer);
|
||||
|
|
|
@ -132,13 +132,12 @@ unsigned long segment_base(u16 selector)
|
|||
if (selector == 0)
|
||||
return 0;
|
||||
|
||||
asm("sgdt %0" : "=m"(gdt));
|
||||
kvm_get_gdt(&gdt);
|
||||
table_base = gdt.base;
|
||||
|
||||
if (selector & 4) { /* from ldt */
|
||||
u16 ldt_selector;
|
||||
u16 ldt_selector = kvm_read_ldt();
|
||||
|
||||
asm("sldt %0" : "=g"(ldt_selector));
|
||||
table_base = segment_base(ldt_selector);
|
||||
}
|
||||
d = (struct desc_struct *)(table_base + (selector & ~7));
|
||||
|
|
Loading…
Reference in a new issue