0N/A; VMMGC - Guest Context Virtual Machine Monitor assembly routines.
0N/A; Copyright (C) 2006 InnoTek Systemberatung GmbH
0N/A; This file is part of VirtualBox Open Source Edition (OSE), as
0N/A; you can redistribute it
and/or modify it under the terms of the GNU
0N/A; General Public License as published by the Free Software Foundation,
0N/A; in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
0N/A; distribution. VirtualBox OSE is distributed in the hope that it will
0N/A; be useful, but WITHOUT ANY WARRANTY of any kind.
0N/A; If you received this file as part of a commercial VirtualBox
0N/A; distribution, then only the terms of your commercial VirtualBox
0N/A; license agreement apply instead of the previous paragraph.
1472N/A;*******************************************************************************
1472N/A;*******************************************************************************
1879N/A;*******************************************************************************
1879N/A;* Defined Constants And Macros *
1879N/A;*******************************************************************************
1879N/A;; save all registers before loading special values for the faulting.
0N/A%macro SaveAndLoadAll 0
0N/A call NAME(vmmGCTestLoadRegs)
0N/A;; restore all registers after faulting.
0N/A;*******************************************************************************
0N/A;* External Symbols *
0N/A;*******************************************************************************
0N/Aextern IMPNAME(g_Logger)
0N/Aextern IMPNAME(g_RelLogger)
0N/Aextern NAME(RTLogLogger)
0N/A; * Internal GC logger worker: Logger wrapper.
0N/A;VMMGCDECL(void) vmmGCLoggerWrapper(const char *pszFormat, ...);
0N/AEXPORTEDNAME vmmGCLoggerWrapper
0N/A%ifdef ASM_FORMAT_ELF
0N/A push dword IMP(g_Logger) ; YASM BUG #67! YASMCHECK!
0N/A call NAME(RTLogLogger)
0N/AENDPROC vmmGCLoggerWrapper
; * Internal GC logger worker: Logger (release) wrapper.
;VMMGCDECL(void) vmmGCRelLoggerWrapper(const char *pszFormat, ...);
EXPORTEDNAME vmmGCRelLoggerWrapper
push dword IMP(g_RelLogger) ; YASM BUG #67! YASMCHECK!
ENDPROC vmmGCRelLoggerWrapper
; Enables write protection.
or eax, X86_CR0_WRITE_PROTECT
; Disables write protection.
and eax, ~X86_CR0_WRITE_PROTECT
; Load special register set expected upon faults.
; All registers are changed.
BEGINPROC vmmGCTestLoadRegs
ENDPROC vmmGCTestLoadRegs
GLOBALNAME vmmGCTestTrap3
EXPORTEDNAME vmmGCTestTrap3_FaultEIP
GLOBALNAME vmmGCTestTrap8
mov word [esp], 111 ; make any #PF double fault.
EXPORTEDNAME vmmGCTestTrap8_FaultEIP
; A simple Trap 0d testcase.
GLOBALNAME vmmGCTestTrap0d
EXPORTEDNAME vmmGCTestTrap0d_FaultEIP
; A simple Trap 0e testcase.
GLOBALNAME vmmGCTestTrap0e
EXPORTEDNAME vmmGCTestTrap0e_FaultEIP