mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 23:42:32 +00:00
hw_x86_64: Add control register 4 to Cpu class
This commit is contained in:
parent
fdbb073414
commit
5eb75e9e81
@ -136,6 +136,112 @@ class Genode::Cpu
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Control register 4
|
||||||
|
*/
|
||||||
|
struct Cr4 : Register<64>
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Virtual-8086 Mode Extensions
|
||||||
|
* */
|
||||||
|
struct Vme : Bitfield<0, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Protected-Mode Virtual Interrupts
|
||||||
|
*/
|
||||||
|
struct Pvi : Bitfield<1, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Time Stamp Disable
|
||||||
|
*/
|
||||||
|
struct Tsd : Bitfield<2, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Debugging Exceptions
|
||||||
|
*/
|
||||||
|
struct De : Bitfield<3, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Page Size Extensions
|
||||||
|
*/
|
||||||
|
struct Pse : Bitfield<4, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Physical Address Extension
|
||||||
|
*/
|
||||||
|
struct Pae : Bitfield<5, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Machine-Check Enable
|
||||||
|
*/
|
||||||
|
struct Mce : Bitfield<6, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Page Global Enable
|
||||||
|
* */
|
||||||
|
struct Pge : Bitfield<7, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performance-Monitoring Counter Enable
|
||||||
|
*/
|
||||||
|
struct Pce : Bitfield<8, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Operating System Support for FXSAVE and FXRSTOR instructions
|
||||||
|
*/
|
||||||
|
struct Osfxsr : Bitfield<9, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Operating System Support for Unmasked SIMD Floating-Point Exceptions
|
||||||
|
*/
|
||||||
|
struct Osxmmexcpt : Bitfield<10, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VMX-Enable
|
||||||
|
*/
|
||||||
|
struct Vmxe : Bitfield<13, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SMX-Enable
|
||||||
|
*/
|
||||||
|
struct Smxe : Bitfield<14, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FSGSBASE-Enable
|
||||||
|
*/
|
||||||
|
struct Fsgsbase : Bitfield<16, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PCIDE-Enable
|
||||||
|
*/
|
||||||
|
struct Pcide : Bitfield<17, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* XSAVE and Processor Extended States-Enable
|
||||||
|
*/
|
||||||
|
struct Osxsave : Bitfield<18, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SMEP-Enable
|
||||||
|
*/
|
||||||
|
struct Smep : Bitfield<20, 1> { };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SMAP-Enable
|
||||||
|
*/
|
||||||
|
struct Smap : Bitfield<21, 1> { };
|
||||||
|
|
||||||
|
static void write(access_t const v) {
|
||||||
|
asm volatile ("mov %0, %%cr4" :: "r" (v) : ); }
|
||||||
|
|
||||||
|
static access_t read()
|
||||||
|
{
|
||||||
|
access_t v;
|
||||||
|
asm volatile ("mov %%cr4, %0" : "=r" (v) :: );
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disable FPU by setting the TS flag in CR0.
|
* Disable FPU by setting the TS flag in CR0.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user