On 05/07/21 10:18, Lara Lazier wrote:
+#define CR4_RESERVED_MASK \
+(~(unsigned long)(CR4_VME_MASK | CR4_PVI_MASK | CR4_TSD_MASK \
+ | CR4_DE_MASK | CR4_PSE_MASK | CR4_PAE_MASK \
+ | CR4_MCE_MASK | CR4_PGE_MASK | CR4_PCE_MASK \
+ | CR4_OSFXSR_MASK | CR4_OSXMMEXCPT_MASK |CR4_UMIP_MASK \
+ | CR4_FSGSBASE_MASK | CR4_PCIDE_MASK | CR4_OSXSAVE_MASK \
+ | CR4_SMEP_MASK | CR4_SMAP_MASK | CR4_PKE_MASK))
+
This ~ trick could also be useful for EFER, very nice!
Just a couple changes required:
1) CR4_PKS_MASK is missing here and in cr4_reserved_bits (TCG supports
it but KVM does not)
2) the cast should be to target_ulong (to cover the case of 32-bit host
and 64-bit emulated processor)
In addition, as discussed on our weekly call CR3 checks are not complete
so it's probably best to focus on CR4 for this patch and split CR3 to a
different one.
Paolo