1;------------------------------------------------------------------------------ 2; @file 3; Transition from 32 bit flat protected mode into 64 bit flat protected mode 4; 5; Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.<BR> 6; This program and the accompanying materials 7; are licensed and made available under the terms and conditions of the BSD License 8; which accompanies this distribution. The full text of the license may be found at 9; http://opensource.org/licenses/bsd-license.php 10; 11; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13; 14;------------------------------------------------------------------------------ 15 16BITS 32 17 18; 19; Modified: EAX 20; 21Transition32FlatTo64Flat: 22 23 OneTimeCall SetCr3ForPageTables64 24 25 mov eax, cr4 26 bts eax, 5 ; enable PAE 27 mov cr4, eax 28 29 mov ecx, 0xc0000080 30 rdmsr 31 bts eax, 8 ; set LME 32 wrmsr 33 34 mov eax, cr0 35 bts eax, 31 ; set PG 36 mov cr0, eax ; enable paging 37 38 jmp LINEAR_CODE64_SEL:ADDR_OF(jumpTo64BitAndLandHere) 39BITS 64 40jumpTo64BitAndLandHere: 41 42 debugShowPostCode POSTCODE_64BIT_MODE 43 44 OneTimeCallRet Transition32FlatTo64Flat 45 46