uint_t mce : 1;
uint_t pge : 1;
uint_t pce : 1;
- uint_t osf_xsr : 1;
- uint_t osx : 1;
- uint_t rsvd1 : 21;
+ uint_t os_fxsr : 1;
+ uint_t osxmmexcpt : 1;
+ uint_t rsvd0 : 5;
+ uint_t fsgsbase : 1;
+ uint_t rsvd1 : 1;
+ uint_t osxsave : 1;
+ uint_t rsvd2 : 13;
} __attribute__((packed));
struct cr4_64 {
uint_t mce : 1;
uint_t pge : 1;
uint_t pce : 1;
- uint_t osf_xsr : 1;
- uint_t osx : 1;
- uint_t rsvd1 : 21;
- uint_t rsvd2 : 32;
+ uint_t os_fxsr : 1;
+ uint_t osxmmexcpt : 1;
+ uint_t rsvd0 : 5;
+ uint_t fsgsbase : 1;
+ uint_t rsvd1 : 1;
+ uint_t osxsave : 1;
+ uint_t rsvd2 : 13;
+ uint_t rsvd3 : 32;
} __attribute__((packed));
-
/*
// First opcode byte
static const uchar_t cr_access_byte = 0x0f;
int v3_handle_cr4_write(struct guest_info * info);
int v3_handle_cr4_read(struct guest_info * info);
+int v3_handle_cr8_write(struct guest_info * info);
+int v3_handle_cr8_read(struct guest_info * info);
+
int v3_handle_efer_write(struct guest_info * core, uint_t msr, struct v3_msr src, void * priv_data);
int v3_handle_efer_read(struct guest_info * core, uint_t msr, struct v3_msr * dst, void * priv_data);