selm.h revision dcc035155cdf232a3d79024f475c2d4448981e85
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * SELM - The Selector Manager.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * Copyright (C) 2006-2010 Oracle Corporation
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * available from http://www.virtualbox.org. This file is free software;
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * you can redistribute it and/or modify it under the terms of the GNU
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * General Public License (GPL) as published by the Free Software
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * The contents of this file may alternatively be used under the terms
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * of the Common Development and Distribution License Version 1.0
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * VirtualBox OSE distribution, in which case the provisions of the
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * CDDL are applicable instead of those of the GPL.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * You may elect to license modified versions of this file under the
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync * terms and conditions of either the GPL or the CDDL or both.
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsync/** @defgroup grp_selm The Selector Monitor(/Manager) API
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncVMMDECL(void) SELMSetTrap8EIP(PVM pVM, uint32_t u32EIP);
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncVMMDECL(int) SELMGetRing1Stack(PVM pVM, uint32_t *pSS, PRTGCPTR32 pEsp);
a734c64bff58bda2fa48c2795453e092167b0ff7vboxsyncVMMDECL(int) SELMGetTSSInfo(PVM pVM, PVMCPU pVCpu, PRTGCUINTPTR pGCPtrTss, PRTGCUINTPTR pcbTss, bool *pfCanHaveIOBitmap);
#define SELMTOFLAT_FLAGS_CPL0 0
VMMDECL(int) SELMToFlatEx(PVMCPU pVCpu, DISSELREG SelReg, PCCPUMCTXCORE pCtxCore, RTGCPTR Addr, unsigned fFlags, PRTGCPTR ppvGC);
VMMDECL(int) SELMToFlatBySelEx(PVMCPU pVCpu, X86EFLAGS eflags, RTSEL Sel, RTGCPTR Addr, PCCPUMSELREGHID pHiddenSel,
VMMDECL(int) SELMValidateAndConvertCSAddr(PVMCPU pVCpu, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS,
VMMDECL(int) SELMValidateAndConvertCSAddrGCTrap(PVMCPU pVCpu, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS, RTGCPTR Addr,
VMMDECL(DISCPUMODE) SELMGetCpuModeFromSelector(PVMCPU pVCpu, X86EFLAGS eflags, RTSEL Sel, PCCPUMSELREGHID pHiddenSel);
#ifdef IN_RING3
# ifdef VBOX_STRICT