]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Library/BaseLib/Ia32/DisablePaging32.c
1. Remove #ifdef _MSC_EXTENSION_ from all source files
[mirror_edk2.git] / MdePkg / Library / BaseLib / Ia32 / DisablePaging32.c
1 /** @file
2 AsmDisablePaging32 function.
3
4 Copyright (c) 2006 - 2007, Intel Corporation<BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 __declspec (naked)
16 VOID
17 EFIAPI
18 InternalX86DisablePaging32 (
19 IN SWITCH_STACK_ENTRY_POINT EntryPoint,
20 IN VOID *Context1, OPTIONAL
21 IN VOID *Context2, OPTIONAL
22 IN VOID *NewStack
23 )
24 {
25 _asm {
26 push ebp
27 mov ebp, esp
28 mov ebx, EntryPoint
29 mov ecx, Context1
30 mov edx, Context2
31 pushfd
32 pop edi // save EFLAGS to edi
33 cli
34 mov eax, cr0
35 btr eax, 31
36 mov esp, NewStack
37 mov cr0, eax
38 push edi
39 popfd // restore EFLAGS from edi
40 push edx
41 push ecx
42 call ebx
43 jmp $ // EntryPoint() should not return
44 }
45 }
46