ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; $Id$
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;; @file
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; VMM - World Switchers, X86 Stub.
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; Copyright (C) 2006-2013 Oracle Corporation
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; This file is part of VirtualBox Open Source Edition (OSE), as
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; available from http://www.virtualbox.org. This file is free software;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; you can redistribute it and/or modify it under the terms of the GNU
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; General Public License (GPL) as published by the Free Software
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; Foundation, in version 2 as it comes in the "COPYING" file of the
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;*******************************************************************************
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;* Defined Constants And Macros *
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;*******************************************************************************
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync%define NAME_OVERLOAD(name) vmmR3SwitcherX86Stub_ %+ name
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;*******************************************************************************
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;* Header Files *
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;*******************************************************************************
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync%include "VBox/asmdefs.mac"
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync%include "VBox/err.mac"
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync%include "VMMSwitcher.mac"
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINCODE
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncGLOBALNAME Start
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBITS 32
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINPROC vmmR0ToRawMode
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync mov eax, VERR_VMM_SWITCHER_STUB
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync ret
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncENDPROC vmmR0ToRawMode
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINPROC vmmRCCallTrampoline
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync.tight_loop:
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync int3
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync jmp .tight_loop
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncENDPROC vmmRCCallTrampoline
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINPROC vmmRCToHost
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync mov eax, VERR_VMM_SWITCHER_STUB
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync ret
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncENDPROC vmmRCToHost
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINPROC vmmRCToHostAsmNoReturn
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync mov eax, VERR_VMM_SWITCHER_STUB
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync ret
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncENDPROC vmmRCToHostAsmNoReturn
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINPROC vmmRCToHostAsm
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync mov eax, VERR_VMM_SWITCHER_STUB
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync ret
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncENDPROC vmmRCToHostAsm
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncGLOBALNAME End
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; The description string (in the text section).
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncNAME(Description):
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync db "X86 Stub."
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync db 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; Dummy fixups.
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncBEGINDATA
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncGLOBALNAME Fixups
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync db FIX_THE_END ; final entry.
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncGLOBALNAME FixupsEnd
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync;;
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync; The switcher definition structure.
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncALIGNDATA(16)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsyncGLOBALNAME Def
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync istruc VMMSWITCHERDEF
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.pvCode, RTCCPTR_DEF NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.pvFixups, RTCCPTR_DEF NAME(Fixups)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.pszDesc, RTCCPTR_DEF NAME(Description)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.pfnRelocate, RTCCPTR_DEF 0
d30efe067c3a94d05efb6215f2ab534f6d760b08vboxsync at VMMSWITCHERDEF.enmType, dd VMMSWITCHER_X86_STUB
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.cbCode, dd NAME(End) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offR0ToRawMode, dd NAME(vmmR0ToRawMode) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offRCToHost, dd NAME(vmmRCToHost) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offRCCallTrampoline, dd NAME(vmmRCCallTrampoline) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offRCToHostAsm, dd NAME(vmmRCToHostAsm) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offRCToHostAsmNoReturn, dd NAME(vmmRCToHostAsmNoReturn) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync ; disasm help
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offHCCode0, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.cbHCCode0, dd NAME(vmmRCCallTrampoline) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offHCCode1, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.cbHCCode1, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offIDCode0, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.cbIDCode0, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offIDCode1, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.cbIDCode1, dd 0
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.offGCCode, dd NAME(vmmRCCallTrampoline) - NAME(Start)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync at VMMSWITCHERDEF.cbGCCode, dd NAME(End) - NAME(vmmRCCallTrampoline)
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync iend
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync
ae20b83f0c94402a3e3ac021c3d4e5f827e4905cvboxsync