mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
hypervisor: x86: provide a generic SpecialRegisters structure
Signed-off-by: Wei Liu <liuwe@microsoft.com>
This commit is contained in:
@@ -8,9 +8,9 @@ use crate::arch::emulator::{EmulationError, EmulationResult, PlatformEmulator, P
|
||||
use crate::arch::x86::emulator::instructions::*;
|
||||
use crate::arch::x86::regs::{CR0_PE, EFER_LMA};
|
||||
use crate::arch::x86::{
|
||||
segment_type_expand_down, segment_type_ro, Exception, SegmentRegister, StandardRegisters,
|
||||
segment_type_expand_down, segment_type_ro, Exception, SegmentRegister, SpecialRegisters,
|
||||
StandardRegisters,
|
||||
};
|
||||
use crate::x86_64::SpecialRegisters;
|
||||
use anyhow::Context;
|
||||
use iced_x86::*;
|
||||
|
||||
@@ -390,12 +390,12 @@ impl CpuStateManager for EmulatorCpuState {
|
||||
}
|
||||
|
||||
match reg {
|
||||
Register::CS => Ok(self.sregs.cs.into()),
|
||||
Register::DS => Ok(self.sregs.ds.into()),
|
||||
Register::ES => Ok(self.sregs.es.into()),
|
||||
Register::FS => Ok(self.sregs.fs.into()),
|
||||
Register::GS => Ok(self.sregs.gs.into()),
|
||||
Register::SS => Ok(self.sregs.ss.into()),
|
||||
Register::CS => Ok(self.sregs.cs),
|
||||
Register::DS => Ok(self.sregs.ds),
|
||||
Register::ES => Ok(self.sregs.es),
|
||||
Register::FS => Ok(self.sregs.fs),
|
||||
Register::GS => Ok(self.sregs.gs),
|
||||
Register::SS => Ok(self.sregs.ss),
|
||||
r => Err(PlatformError::InvalidRegister(anyhow!(
|
||||
"read_segment invalid register {:?}",
|
||||
r
|
||||
@@ -413,12 +413,12 @@ impl CpuStateManager for EmulatorCpuState {
|
||||
}
|
||||
|
||||
match reg {
|
||||
Register::CS => self.sregs.cs = segment_register.into(),
|
||||
Register::DS => self.sregs.ds = segment_register.into(),
|
||||
Register::ES => self.sregs.es = segment_register.into(),
|
||||
Register::FS => self.sregs.fs = segment_register.into(),
|
||||
Register::GS => self.sregs.gs = segment_register.into(),
|
||||
Register::SS => self.sregs.ss = segment_register.into(),
|
||||
Register::CS => self.sregs.cs = segment_register,
|
||||
Register::DS => self.sregs.ds = segment_register,
|
||||
Register::ES => self.sregs.es = segment_register,
|
||||
Register::FS => self.sregs.fs = segment_register,
|
||||
Register::GS => self.sregs.gs = segment_register,
|
||||
Register::SS => self.sregs.ss = segment_register,
|
||||
r => return Err(PlatformError::InvalidRegister(anyhow!("{:?}", r))),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user