/** @file\r
\r
- Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
//\r
ZeroMem (KernelSetup, 0x1f1);\r
ZeroMem (((UINT8 *)KernelSetup) + SetupEnd, 4096 - SetupEnd);\r
- DEBUG ((EFI_D_INFO, "Cleared kernel setup 0-0x1f1, 0x%x-0x1000\n", SetupEnd));\r
+ DEBUG ((EFI_D_INFO, "Cleared kernel setup 0-0x1f1, 0x%Lx-0x1000\n",\r
+ (UINT64)SetupEnd));\r
\r
return EFI_SUCCESS;\r
}\r
// Enlarge space here, because we will allocate pool now.\r
//\r
MemoryMapSize += EFI_PAGE_SIZE;\r
- MemoryMap = AllocatePool (MemoryMapSize);\r
- ASSERT (MemoryMap != NULL);\r
+ Status = gBS->AllocatePool (\r
+ EfiLoaderData,\r
+ MemoryMapSize,\r
+ (VOID **) &MemoryMap\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
\r
//\r
// Get System MemoryMap\r
if ((LastE820 != NULL) &&\r
(LastE820->type == (UINT32) E820Type) &&\r
(MemoryMap->PhysicalStart == LastEndAddr)) {\r
- LastE820->size += EFI_PAGES_TO_SIZE (MemoryMap->NumberOfPages);\r
- LastEndAddr += EFI_PAGES_TO_SIZE (MemoryMap->NumberOfPages);\r
+ LastE820->size += EFI_PAGES_TO_SIZE ((UINTN) MemoryMap->NumberOfPages);\r
+ LastEndAddr += EFI_PAGES_TO_SIZE ((UINTN) MemoryMap->NumberOfPages);\r
} else {\r
if (E820EntryCount >= (sizeof (Bp->e820_map) / sizeof (Bp->e820_map[0]))) {\r
break;\r
}\r
E820->type = (UINT32) E820Type;\r
E820->addr = MemoryMap->PhysicalStart;\r
- E820->size = EFI_PAGES_TO_SIZE (MemoryMap->NumberOfPages);\r
+ E820->size = EFI_PAGES_TO_SIZE ((UINTN) MemoryMap->NumberOfPages);\r
LastE820 = E820;\r
LastEndAddr = E820->addr + E820->size;\r
E820++;\r
#ifdef MDE_CPU_IA32\r
Efi->efi_loader_signature = SIGNATURE_32 ('E', 'L', '3', '2');\r
#else\r
- Efi->efi_systab_hi = ((UINT64)(UINTN) gST) >> 32;\r
- Efi->efi_memmap_hi = ((UINT64)(UINTN) MemoryMapPtr) >> 32;\r
+ Efi->efi_systab_hi = (UINT32) (((UINT64)(UINTN) gST) >> 32);\r
+ Efi->efi_memmap_hi = (UINT32) (((UINT64)(UINTN) MemoryMapPtr) >> 32);\r
Efi->efi_loader_signature = SIGNATURE_32 ('E', 'L', '6', '4');\r
#endif\r
\r
InitLinuxDescriptorTables ();\r
\r
Bp->hdr.code32_start = (UINT32)(UINTN) Kernel;\r
- if (Bp->hdr.version >= 0x20b && Bp->hdr.handover_offset &&\r
- (Bp->hdr.load_flags & (sizeof(long) >> 1))) {\r
+ if (Bp->hdr.version >= 0x20c && Bp->hdr.handover_offset &&\r
+ (Bp->hdr.xloadflags & (sizeof (UINTN) == 4 ? BIT2 : BIT3))) {\r
DEBUG ((EFI_D_INFO, "Jumping to kernel EFI handover point at ofs %x\n", Bp->hdr.handover_offset));\r
\r
DisableInterrupts ();\r
JumpToUefiKernel ((VOID*) gImageHandle, (VOID*) gST, KernelSetup, Kernel);\r
}\r
+\r
//\r
// Old kernels without EFI handover protocol\r
//\r