hypervisor: x86: provide a generic SegmentRegister structure

And drop SegmentRegisterOps since it is no longer required.

Signed-off-by: Wei Liu <liuwe@microsoft.com>
This commit is contained in:
Wei Liu
2022-07-14 21:36:08 +00:00
committed by Liu Wei
parent 8b7781e267
commit 75797827d5
8 changed files with 191 additions and 197 deletions

View File

@@ -4,9 +4,9 @@
//
#[cfg(target_arch = "x86_64")]
use hypervisor::kvm::kvm_bindings::kvm_dtable as DTableRegister;
use hypervisor::arch::x86::SegmentRegister;
#[cfg(target_arch = "x86_64")]
use hypervisor::x86_64::SegmentRegister;
use hypervisor::kvm::kvm_bindings::kvm_dtable as DTableRegister;
use linux_loader::elf;
use std::fs::File;
use std::io::Write;

View File

@@ -2287,14 +2287,14 @@ impl CpuElf64Writable for CpuManager {
.map_err(|_e| GuestDebuggableError::Coredump(anyhow!("get msr failed")))?;
let kernel_gs_base = msrs.as_slice()[0].data;
let cs = CpuSegment::new(sregs.cs);
let ds = CpuSegment::new(sregs.ds);
let es = CpuSegment::new(sregs.es);
let fs = CpuSegment::new(sregs.fs);
let gs = CpuSegment::new(sregs.gs);
let ss = CpuSegment::new(sregs.ss);
let ldt = CpuSegment::new(sregs.ldt);
let tr = CpuSegment::new(sregs.tr);
let cs = CpuSegment::new(sregs.cs.into());
let ds = CpuSegment::new(sregs.ds.into());
let es = CpuSegment::new(sregs.es.into());
let fs = CpuSegment::new(sregs.fs.into());
let gs = CpuSegment::new(sregs.gs.into());
let ss = CpuSegment::new(sregs.ss.into());
let ldt = CpuSegment::new(sregs.ldt.into());
let tr = CpuSegment::new(sregs.tr.into());
let gdt = CpuSegment::new_from_table(sregs.gdt);
let idt = CpuSegment::new_from_table(sregs.idt);
let cr = [sregs.cr0, sregs.cr8, sregs.cr2, sregs.cr3, sregs.cr4];