Lines Matching refs:tcb
471 static void dissociateVcpuTcb(tcb_t *tcb, vcpu_t *vcpu)
473 assert(tcb->tcbArch.tcbVCPU == vcpu);
474 assert(vcpu->vcpuTCB == tcb);
475 tcb->tcbArch.tcbVCPU = NULL;
496 static void associateVcpuTcb(tcb_t *tcb, vcpu_t *vcpu)
498 if (tcb->tcbArch.tcbVCPU) {
499 dissociateVcpuTcb(tcb, tcb->tcbArch.tcbVCPU);
504 vcpu->vcpuTCB = tcb;
505 tcb->tcbArch.tcbVCPU = vcpu;
872 static exception_t invokeSetTCB(vcpu_t *vcpu, tcb_t *tcb)
874 associateVcpuTcb(tcb, vcpu);
916 void vcpu_sysvmenter_reply_to_user(tcb_t *tcb)
921 buffer = lookupIPCBuffer(true, tcb);
922 vcpu = tcb->tcbArch.tcbVCPU;
930 setMR(tcb, buffer, SEL4_VMENTER_CALL_EIP_MR, vmread(VMX_GUEST_RIP));
931 setMR(tcb, buffer, SEL4_VMENTER_CALL_CONTROL_PPC_MR, vmread(VMX_CONTROL_PRIMARY_PROCESSOR_CONTROLS));
933 setMR(tcb, buffer, SEL4_VMENTER_CALL_CONTROL_ENTRY_MR, vmread(VMX_CONTROL_ENTRY_INTERRUPTION_INFO));
934 setRegister(tcb, msgInfoRegister, 0);
1274 void VMCheckBoundNotification(tcb_t *tcb)
1282 assert(tcb->tcbAffinity == getCurrentCPUIndex());
1283 notification_t *ntfnPtr = tcb->tcbBoundNotification;
1284 if (thread_state_ptr_get_tsType(&tcb->tcbState) == ThreadState_RunningVM
1289 setThreadState(tcb, ThreadState_Running);
1290 setRegister(tcb, badgeRegister, badge);
1291 Arch_leaveVMAsyncTransfer(tcb);
1294 * run this tcb if it is permitted instead of switching VMCS contexts
1296 if (tcb != NODE_STATE(ksCurThread)) {
1297 possibleSwitchTo(tcb);