X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_ctrl_regs.h;h=1849092b96e5fa8093f20a95ba2d13461a298c2a;hp=0bebdbcaf5586a1feedf46aaf8271f98d989fa74;hb=eb87f60800c8634e37d1f8e71cd8f88605f2a46e;hpb=356f5cc77a2783f2917b994be4cf954891828380 diff --git a/palacios/include/palacios/vmm_ctrl_regs.h b/palacios/include/palacios/vmm_ctrl_regs.h index 0bebdbc..1849092 100644 --- a/palacios/include/palacios/vmm_ctrl_regs.h +++ b/palacios/include/palacios/vmm_ctrl_regs.h @@ -2,6 +2,8 @@ #define __VMM_CTRL_REGS_H +#include + struct cr0_real { uint_t pe : 1; uint_t mp : 1; @@ -144,4 +146,28 @@ struct rflags { }; + + + +// First opcode byte +static const uchar_t cr_access_byte = 0x0f; + +// Second opcode byte +static const uchar_t lmsw_byte = 0x01; +static const uchar_t lmsw_reg_byte = 0x6; +static const uchar_t smsw_byte = 0x01; +static const uchar_t smsw_reg_byte = 0x4; +static const uchar_t clts_byte = 0x06; +static const uchar_t mov_to_cr_byte = 0x22; +static const uchar_t mov_from_cr_byte = 0x20; + + + +int handle_cr0_write(struct guest_info * info); +int handle_cr0_read(struct guest_info * info); + +int handle_cr3_write(struct guest_info * info); +int handle_cr3_read(struct guest_info * info); + + #endif