#include <Guid/MemoryTypeInformation.h>\r
\r
#include "Platform.h"\r
+#include "Cmos.h"\r
\r
EFI_MEMORY_TYPE_INFORMATION mDefaultMemoryTypeInformation[] = {\r
{ EfiACPIMemoryNVS, 0x004 },\r
{ EfiACPIReclaimMemory, 0x008 },\r
- { EfiReservedMemoryType, 0x004 }, \r
+ { EfiReservedMemoryType, 0x004 },\r
{ EfiRuntimeServicesData, 0x024 },\r
{ EfiRuntimeServicesCode, 0x030 },\r
{ EfiBootServicesCode, 0x180 },\r
\r
VOID\r
MemMapInitialization (\r
+ EFI_PHYSICAL_ADDRESS TopOfMemory\r
)\r
{\r
//\r
//\r
// Add PCI MMIO space available to PCI resource allocations\r
//\r
- AddIoMemoryBaseSizeHob (0x80000000, 0xFEC00000 - 0x80000000);\r
+ if (TopOfMemory < BASE_2GB) {\r
+ AddIoMemoryBaseSizeHob (BASE_2GB, 0xFEC00000 - BASE_2GB);\r
+ } else {\r
+ AddIoMemoryBaseSizeHob (TopOfMemory, 0xFEC00000 - TopOfMemory);\r
+ }\r
\r
//\r
// Local APIC range\r
//\r
- AddIoMemoryBaseSizeHob (0xFEC80000, 0x80000);\r
+ AddIoMemoryBaseSizeHob (0xFEC80000, SIZE_512KB);\r
\r
//\r
// I/O APIC range\r
//\r
- AddIoMemoryBaseSizeHob (0xFEC00000, 0x80000);\r
+ AddIoMemoryBaseSizeHob (0xFEC00000, SIZE_512KB);\r
\r
//\r
// Video memory + Legacy BIOS region\r
//\r
- AddIoMemoryRangeHob (0x0A0000, 0x100000);\r
+ AddIoMemoryRangeHob (0x0A0000, BASE_1MB);\r
}\r
\r
\r
//\r
// Disable A20 Mask\r
//\r
- IoWrite8 (0x92, (UINT8) (IoRead8 (0x92) | 0x02));\r
+ IoOr8 (0x92, BIT1);\r
\r
//\r
// Build the CPU hob with 36-bit addressing and 16-bits of IO space.\r
//\r
BuildCpuHob (36, 16);\r
+\r
+ //\r
+ // Set the PM I/O base address to 0x400\r
+ //\r
+ PciAndThenOr32 (PCI_LIB_ADDRESS (0, 1, 3, 0x40), (UINT32) ~0xfc0, 0x400);\r
}\r
\r
\r
}\r
\r
\r
+VOID\r
+DebugDumpCmos (\r
+ VOID\r
+ )\r
+{\r
+ UINTN Loop;\r
+\r
+ DEBUG ((EFI_D_INFO, "CMOS:\n"));\r
+\r
+ for (Loop = 0; Loop < 0x80; Loop++) {\r
+ if ((Loop % 0x10) == 0) {\r
+ DEBUG ((EFI_D_INFO, "%02x:", Loop));\r
+ }\r
+ DEBUG ((EFI_D_INFO, " %02x", CmosRead8 (Loop)));\r
+ if ((Loop % 0x10) == 0xf) {\r
+ DEBUG ((EFI_D_INFO, "\n"));\r
+ }\r
+ }\r
+}\r
+\r
+\r
/**\r
Perform Platform PEI initialization.\r
\r
IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
+ EFI_PHYSICAL_ADDRESS TopOfMemory;\r
+\r
DEBUG ((EFI_D_ERROR, "Platform PEIM Loaded\n"));\r
\r
- MemDetect ();\r
+ DebugDumpCmos ();\r
+\r
+ TopOfMemory = MemDetect ();\r
\r
ReserveEmuVariableNvStore ();\r
\r
PeiFvInitialization ();\r
\r
- MemMapInitialization ();\r
+ MemMapInitialization (TopOfMemory);\r
\r
MiscInitialization ();\r
\r