1e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#------------------------------------------------------------------------------
2e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
3bb817c56c51fabe92915fe30b168b4833cb2aed9hhtian# Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
4bb817c56c51fabe92915fe30b168b4833cb2aed9hhtian# This program and the accompanying materials
5e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# are licensed and made available under the terms and conditions of the BSD License
6e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# which accompanies this distribution.  The full text of the license may be found at
735a171541199329108aa8c5417386d7afce9ddbfmyronporter# http://opensource.org/licenses/bsd-license.php.
8e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
9e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
12e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# Module Name:
13e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
141f86b07d91e78e998991659cfc4d625b3e3e3171xli#   DisablePaging32.S
15e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
16e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# Abstract:
17e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
18e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#   InternalX86DisablePaging32 function
19e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
20e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# Notes:
21e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#
22e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#------------------------------------------------------------------------------
23e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
24132f41f0a92082775d931067089a63ca50367225xliASM_GLOBAL ASM_PFX(InternalX86DisablePaging32)
25e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff
26e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#------------------------------------------------------------------------------
27e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# VOID
28e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# EFIAPI
29e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff# InternalX86DisablePaging32 (
30e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#   IN      SWITCH_STACK_ENTRY_POINT  EntryPoint,
31e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#   IN      VOID                      *Context1,    OPTIONAL
32e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#   IN      VOID                      *Context2,    OPTIONAL
33e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#   IN      VOID                      *NewStack
34e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#   );
35e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff#------------------------------------------------------------------------------
36e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeffASM_PFX(InternalX86DisablePaging32):
37e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    movl    4(%esp), %ebx
38e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    movl    8(%esp), %ecx
39e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    movl    12(%esp), %edx
40e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    pushfl
4157246fe073e7946e03387576fca76eba86b51694vanjeff    pop     %edi                        # save EFLAGS to edi
42e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    cli
43e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    movl    %cr0, %eax
44e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    btrl    $31, %eax
45e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    movl    16(%esp), %esp
46e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    movl    %eax, %cr0
47e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    push    %edi
4857246fe073e7946e03387576fca76eba86b51694vanjeff    popfl                               # restore EFLAGS from edi
49e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    push    %edx
50e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    push    %ecx
51e1f414b6a7d8a0424e0e01f655b09a4612b4d0e8vanjeff    call    *%ebx
5257246fe073e7946e03387576fca76eba86b51694vanjeff    jmp     .                           # EntryPoint() should not return
53