NVMM_X64_GPR_RFLAGS
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_OR_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_OR_MASK);
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_AND_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_AND_MASK);
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_SUB_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_SUB_MASK);
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_XOR_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_XOR_MASK);
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_SUB_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_SUB_MASK);
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_AND_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_AND_MASK);
if (gprs[NVMM_X64_GPR_RFLAGS] & PSL_D) {
if (gprs[NVMM_X64_GPR_RFLAGS] & PSL_D) {
if (gprs[NVMM_X64_GPR_RFLAGS] & PSL_D) {
gprs[NVMM_X64_GPR_RFLAGS] &= ~PSL_SUB_MASK;
gprs[NVMM_X64_GPR_RFLAGS] |= (fl & PSL_SUB_MASK);
if (gprs[NVMM_X64_GPR_RFLAGS] & PSL_D) {
if (state->gprs[NVMM_X64_GPR_RFLAGS] & PSL_Z) {
if ((state->gprs[NVMM_X64_GPR_RFLAGS] & PSL_Z) == 0) {
if (__predict_false(state->gprs[NVMM_X64_GPR_RFLAGS] & PSL_D)) {
printf("| -> RFLAGS=%p\n", (void *)state->gprs[NVMM_X64_GPR_RFLAGS]);
[NVMM_X64_GPR_RFLAGS] = 0x00000002,
vmcb->state.rflags = state->gprs[NVMM_X64_GPR_RFLAGS];
state->gprs[NVMM_X64_GPR_RFLAGS] = vmcb->state.rflags;
vmx_vmwrite(VMCS_GUEST_RFLAGS, state->gprs[NVMM_X64_GPR_RFLAGS]);
state->gprs[NVMM_X64_GPR_RFLAGS] = vmx_vmread(VMCS_GUEST_RFLAGS);
state->gprs[NVMM_X64_GPR_RFLAGS] = PSL_MBO;
state->gprs[NVMM_X64_GPR_RFLAGS] = PSL_MBO;