pmsetup.inc revision 65aac5a3753922635e05796f28b4689ddb49fe65
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;; @file
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;; Initial system setup which needs to run in protected mode.
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;;
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;;
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;; Copyright (C) 2004-2011 Oracle Corporation
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;;
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;; This file is part of VirtualBox Open Source Edition (OSE), as
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;; available from http://www.virtualbox.org. This file is free software;
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; you can redistribute it and/or modify it under the terms of the GNU
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; General Public License (GPL) as published by the Free Software
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; Foundation, in version 2 as it comes in the "COPYING" file of the
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;;
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncLVT_LINT0 equ 0FEE00350h
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncLVT_LINT1 equ 0FEE00360h
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncpublic pmode_setup
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync;; Program LINT0/LINT1 entries in the local APIC. Some Linux kernels (e.g.,
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; RHEL4 SMP 32-bit) expect the entries to be unmasked in virtual wire mode.
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync;; Also make sure APIC timer is masked.
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsyncpmode_setup proc near
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync .386
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync push eax
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync push esi
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync pushf
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync cli ; Interrupts would kill us!
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync call pmode_enter
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync mov eax, cr0 ; Clear CR0.CD and CR0.NW
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync and eax, 09FFFFFFFh
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync mov cr0, eax
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync mov esi, LVT_LINT0 ; Program LINT0 to ExtINT and unmask
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync mov eax, [esi]
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync and eax, 0FFFE00FFh
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync or ah, 7
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync mov [esi], eax
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync mov esi, LVT_LINT1 ; Program LINT1 to NMI and unmask
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync mov eax, [esi]
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync and eax, 0FFFE00FFh
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync or ah, 4
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync mov [esi], eax
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync call pmode_exit
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync popf
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync pop esi
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync pop eax
6728a36898fd2be125a28e84d2115d19aa4923edvboxsync .286
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync ret
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync
9562e2d410460d8fae06fa24297f172fee1d1995vboxsyncpmode_setup endp
9562e2d410460d8fae06fa24297f172fee1d1995vboxsync