1 ; Copyright (c) 2004, Intel Corporation
2 ; All rights reserved. This program and the accompanying materials
3 ; are licensed and made available under the terms and conditions of the BSD License
4 ; which accompanies this distribution. The full text of the license may be found at
5 ; http://opensource.org/licenses/bsd-license.php
7 ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
8 ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 ; AsmEnablePaging64 function
20 ;------------------------------------------------------------------------------
24 ;------------------------------------------------------------------------------
27 ; InternalX86EnablePaging64 (
29 ; IN UINT64 EntryPoint,
30 ; IN UINT64 Context1, OPTIONAL
31 ; IN UINT64 Context2, OPTIONAL
34 ;------------------------------------------------------------------------------
35 InternalX86EnablePaging64 PROC
37 pop rax ; skip the return address
40 add dword ptr [rsp], @F - @Base ; offset for far retf, seg is the 1st arg
41 mov rax, cr4 ; mov eax, cr4
43 mov cr4, rax ; enable PAE
48 mov rax, cr0 ; mov eax, cr0
50 mov cr0, rax ; enable paging
52 @@: ; long mode starts here
59 hlt ; halt processor if EntryPoint() returned
60 InternalX86EnablePaging64 ENDP