aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/svm/svm.c
diff options
context:
space:
mode:
Diffstat (limited to 'xen/arch/x86/hvm/svm/svm.c')
-rw-r--r--xen/arch/x86/hvm/svm/svm.c98
1 files changed, 2 insertions, 96 deletions
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 3845946633..ed42ece5e5 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -181,7 +181,7 @@ static void svm_restore_dr(struct vcpu *v)
__restore_debug_registers(v);
}
-int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
+static int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
{
struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
@@ -190,52 +190,6 @@ int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
c->cr3 = v->arch.hvm_vcpu.guest_cr[3];
c->cr4 = v->arch.hvm_vcpu.guest_cr[4];
- c->idtr_limit = vmcb->idtr.limit;
- c->idtr_base = vmcb->idtr.base;
-
- c->gdtr_limit = vmcb->gdtr.limit;
- c->gdtr_base = vmcb->gdtr.base;
-
- c->cs_sel = vmcb->cs.sel;
- c->cs_limit = vmcb->cs.limit;
- c->cs_base = vmcb->cs.base;
- c->cs_arbytes = vmcb->cs.attr.bytes;
-
- c->ds_sel = vmcb->ds.sel;
- c->ds_limit = vmcb->ds.limit;
- c->ds_base = vmcb->ds.base;
- c->ds_arbytes = vmcb->ds.attr.bytes;
-
- c->es_sel = vmcb->es.sel;
- c->es_limit = vmcb->es.limit;
- c->es_base = vmcb->es.base;
- c->es_arbytes = vmcb->es.attr.bytes;
-
- c->ss_sel = vmcb->ss.sel;
- c->ss_limit = vmcb->ss.limit;
- c->ss_base = vmcb->ss.base;
- c->ss_arbytes = vmcb->ss.attr.bytes;
-
- c->fs_sel = vmcb->fs.sel;
- c->fs_limit = vmcb->fs.limit;
- c->fs_base = vmcb->fs.base;
- c->fs_arbytes = vmcb->fs.attr.bytes;
-
- c->gs_sel = vmcb->gs.sel;
- c->gs_limit = vmcb->gs.limit;
- c->gs_base = vmcb->gs.base;
- c->gs_arbytes = vmcb->gs.attr.bytes;
-
- c->tr_sel = vmcb->tr.sel;
- c->tr_limit = vmcb->tr.limit;
- c->tr_base = vmcb->tr.base;
- c->tr_arbytes = vmcb->tr.attr.bytes;
-
- c->ldtr_sel = vmcb->ldtr.sel;
- c->ldtr_limit = vmcb->ldtr.limit;
- c->ldtr_base = vmcb->ldtr.base;
- c->ldtr_arbytes = vmcb->ldtr.attr.bytes;
-
c->sysenter_cs = vmcb->sysenter_cs;
c->sysenter_esp = vmcb->sysenter_esp;
c->sysenter_eip = vmcb->sysenter_eip;
@@ -253,8 +207,7 @@ int svm_vmcb_save(struct vcpu *v, struct hvm_hw_cpu *c)
return 1;
}
-
-int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
+static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
{
unsigned long mfn = 0;
p2m_type_t p2mt;
@@ -301,53 +254,6 @@ int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
__func__, c->cr3, c->cr0, c->cr4);
#endif
- vmcb->idtr.limit = c->idtr_limit;
- vmcb->idtr.base = c->idtr_base;
-
- vmcb->gdtr.limit = c->gdtr_limit;
- vmcb->gdtr.base = c->gdtr_base;
-
- vmcb->cs.sel = c->cs_sel;
- vmcb->cs.limit = c->cs_limit;
- vmcb->cs.base = c->cs_base;
- vmcb->cs.attr.bytes = c->cs_arbytes;
-
- vmcb->ds.sel = c->ds_sel;
- vmcb->ds.limit = c->ds_limit;
- vmcb->ds.base = c->ds_base;
- vmcb->ds.attr.bytes = c->ds_arbytes;
-
- vmcb->es.sel = c->es_sel;
- vmcb->es.limit = c->es_limit;
- vmcb->es.base = c->es_base;
- vmcb->es.attr.bytes = c->es_arbytes;
-
- vmcb->ss.sel = c->ss_sel;
- vmcb->ss.limit = c->ss_limit;
- vmcb->ss.base = c->ss_base;
- vmcb->ss.attr.bytes = c->ss_arbytes;
- vmcb->cpl = vmcb->ss.attr.fields.dpl;
-
- vmcb->fs.sel = c->fs_sel;
- vmcb->fs.limit = c->fs_limit;
- vmcb->fs.base = c->fs_base;
- vmcb->fs.attr.bytes = c->fs_arbytes;
-
- vmcb->gs.sel = c->gs_sel;
- vmcb->gs.limit = c->gs_limit;
- vmcb->gs.base = c->gs_base;
- vmcb->gs.attr.bytes = c->gs_arbytes;
-
- vmcb->tr.sel = c->tr_sel;
- vmcb->tr.limit = c->tr_limit;
- vmcb->tr.base = c->tr_base;
- vmcb->tr.attr.bytes = c->tr_arbytes;
-
- vmcb->ldtr.sel = c->ldtr_sel;
- vmcb->ldtr.limit = c->ldtr_limit;
- vmcb->ldtr.base = c->ldtr_base;
- vmcb->ldtr.attr.bytes = c->ldtr_arbytes;
-
vmcb->sysenter_cs = c->sysenter_cs;
vmcb->sysenter_esp = c->sysenter_esp;
vmcb->sysenter_eip = c->sysenter_eip;