use bitfield::bitfield;
use crate::bitflags;
pub const IA32_EFER: u32 = 0xc000_0080;
pub const IA32_STAR: u32 = 0xc000_0081;
pub const IA32_LSTAR: u32 = 0xc000_0082;
pub const IA32_CSTAR: u32 = 0xc000_0083;
pub const IA32_FMASK: u32 = 0xc000_0084;
pub const IA32_FS_BASE: u32 = 0xc000_0100;
pub const IA32_GS_BASE: u32 = 0xc000_0101;
pub const IA32_KERNEL_GS_BASE: u32 = 0xc000_0102;
pub const IA32_TSC_AUX: u32 = 0xc000_0103;
pub const IA32_MISC_ENABLE: u32 = 0x0000_01a0;
bitflags! {
pub struct Efer(u32) {
SCE = 1 << 0;
LME = 1 << 8;
LMA = 1 << 10;
NXE = 1 << 11;
}
}
bitflags! {
pub struct MiscEnable(u64) {
FAST_STRINGS = 1 << 0;
}
}
bitfield! {
#[derive(Copy, Clone, Default, PartialEq, Eq, Hash)]
pub struct ApicBase(u64);
impl Debug;
pub bsp, set_bsp : 8;
pub x2apic, set_x2apic : 10;
pub xapic, set_xapic : 11;
pub base, set_base : 35, 12;
}