1 /** 2 AsmDisablePaging32 function. 3 4 Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR> 5 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 #include "BaseLibInternals.h" 16 17 __declspec (naked) 18 VOID 19 EFIAPI 20 InternalX86DisablePaging32 ( 21 IN SWITCH_STACK_ENTRY_POINT EntryPoint, 22 IN VOID *Context1, OPTIONAL 23 IN VOID *Context2, OPTIONAL 24 IN VOID *NewStack 25 ) 26 { 27 _asm { 28 push ebp 29 mov ebp, esp 30 mov ebx, EntryPoint 31 mov ecx, Context1 32 mov edx, Context2 33 pushfd 34 pop edi // save EFLAGS to edi 35 cli 36 mov eax, cr0 37 btr eax, 31 38 mov esp, NewStack 39 mov cr0, eax 40 push edi 41 popfd // restore EFLAGS from edi 42 push edx 43 push ecx 44 call ebx 45 jmp $ // EntryPoint() should not return 46 } 47 } 48 49