1;------------------------------------------------------------------------------
2;
3; Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4; SPDX-License-Identifier: BSD-2-Clause-Patent
5;
6; Module Name:
7;
8;   EnablePaging32.Asm
9;
10; Abstract:
11;
12;   AsmEnablePaging32 function
13;
14; Notes:
15;
16;------------------------------------------------------------------------------
17
18    SECTION .text
19
20;------------------------------------------------------------------------------
21; VOID
22; EFIAPI
23; InternalX86EnablePaging32 (
24;   IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
25;   IN      VOID                      *Context1,    OPTIONAL
26;   IN      VOID                      *Context2,    OPTIONAL
27;   IN      VOID                      *NewStack
28;   );
29;------------------------------------------------------------------------------
30global ASM_PFX(InternalX86EnablePaging32)
31ASM_PFX(InternalX86EnablePaging32):
32    mov     ebx, [esp + 4]
33    mov     ecx, [esp + 8]
34    mov     edx, [esp + 12]
35    pushfd
36    pop     edi                         ; save flags in edi
37    cli
38    mov     eax, cr0
39    bts     eax, 31
40    mov     esp, [esp + 16]
41    mov     cr0, eax
42    push    edi
43    popfd                               ; restore flags
44    push    edx
45    push    ecx
46    call    ebx
47    jmp     $
48
49