uintptr_t
msr_value = _huoji_readmsr(amd64_star);
guest_context->guest_register->Rcx = guest_context->vcpu->svm_stack->guest_vmcb.control.NRip;
guest_context->guest_register->R11 = guest_context->vcpu->svm_stack->guest_vmcb.state_save.Rflags &~ X86_FLAGS_RF;
guest_context->vcpu->svm_stack->guest_vmcb.state_save.CsSelector = (UINT16)((msr_value >> 32) & ~3);
guest_context->vcpu->svm_stack->guest_vmcb.state_save.CsBase = 0;
guest_context->vcpu->svm_stack->guest_vmcb.state_save.CsLimit = 0xFFFFFFFF;
guest_context->vcpu->svm_stack->guest_vmcb.state_save.CsAttrib = Tools::get_segment_long_mode2type(guest_context->vcpu->svm_stack->guest_vmcb.state_save.CsSelector, guest_context->vcpu->svm_stack->guest_vmcb.state_save.GdtrBase, 1, 0);
guest_context->vcpu->svm_stack->guest_vmcb.state_save.SsSelector = (UINT16)(((msr_value >> 32) & ~3) + 8);
guest_context->vcpu->svm_stack->guest_vmcb.state_save.SsBase = 0;
guest_context->vcpu->svm_stack->guest_vmcb.state_save.SsLimit = 0xFFFFFFFF;
guest_context->vcpu->svm_stack->guest_vmcb.state_save.SsAttrib = Tools::get_segment_long_mode2type(guest_context->vcpu->svm_stack->guest_vmcb.state_save.SsSelector, guest_context->vcpu->svm_stack->guest_vmcb.state_save.GdtrBase, 1, 0);
msr_value = _huoji_readmsr(amd64_sfmask);
guest_context->vcpu->svm_stack->guest_vmcb.state_save.Rflags &= ~(msr_value | X86_FLAGS_RF);
msr_value = _huoji_readmsr(amd64_lstar);
guest_context->vcpu->svm_stack->guest_vmcb.state_save.Rip = msr_value;
DebugPrint(
"SYS CALL ! opcode %d == 1 rax %p r11 %p \n"
, op_code, guest_context->guest_register->Rcx, guest_context->guest_register->R11);