summaryrefslogtreecommitdiff
path: root/DuetPkg
diff options
context:
space:
mode:
Diffstat (limited to 'DuetPkg')
-rw-r--r--DuetPkg/DxeIpl/DxeInit.c2
-rw-r--r--DuetPkg/DxeIpl/DxeIpl.h1
-rw-r--r--DuetPkg/DxeIpl/DxeIpl.inf9
-rw-r--r--DuetPkg/DxeIpl/HobGeneration.c246
-rw-r--r--DuetPkg/DxeIpl/HobGeneration.h2
-rw-r--r--DuetPkg/DxeIpl/Ia32/CpuIoAccess.asm62
-rw-r--r--DuetPkg/DxeIpl/Ia32/CpuIoAccessGnu.c27
-rw-r--r--DuetPkg/DxeIpl/Ia32/EnterDxeCore.asm64
-rw-r--r--DuetPkg/DxeIpl/Ia32/EnterDxeCore.c31
-rw-r--r--DuetPkg/DxeIpl/Ia32/EnterDxeCoreGnu.c16
-rw-r--r--DuetPkg/DxeIpl/SerialStatusCode.c27
-rw-r--r--DuetPkg/DxeIpl/X64/CpuIoAccess.asm52
-rw-r--r--DuetPkg/DxeIpl/X64/EnterDxeCore.asm45
-rw-r--r--DuetPkg/DxeIpl/X64/EnterDxeCore.c32
14 files changed, 232 insertions, 384 deletions
diff --git a/DuetPkg/DxeIpl/DxeInit.c b/DuetPkg/DxeIpl/DxeInit.c
index 078ba1a1e0..dff64b4856 100644
--- a/DuetPkg/DxeIpl/DxeInit.c
+++ b/DuetPkg/DxeIpl/DxeInit.c
@@ -305,7 +305,7 @@ Returns:
PrintString(" WELCOME TO EFI WORLD!\n");
EnterDxeMain (StackTop, Handoff->DxeCoreEntryPoint, gHob, PageTableBase);
-
+
PrintString("Fail to enter DXE main!\n");
//
// Should never get here
diff --git a/DuetPkg/DxeIpl/DxeIpl.h b/DuetPkg/DxeIpl/DxeIpl.h
index 4c93071dfe..c8c67948a2 100644
--- a/DuetPkg/DxeIpl/DxeIpl.h
+++ b/DuetPkg/DxeIpl/DxeIpl.h
@@ -27,6 +27,7 @@
#include <Library/BaseMemoryLib.h>
#include <Library/ReportStatusCodeLib.h>
#include <Library/PrintLib.h>
+#include <Library/IoLib.h>
#include <VariableFormat.h>
#include <CpuIA32.h>
diff --git a/DuetPkg/DxeIpl/DxeIpl.inf b/DuetPkg/DxeIpl/DxeIpl.inf
index 68251a5f86..6a2ba5de15 100644
--- a/DuetPkg/DxeIpl/DxeIpl.inf
+++ b/DuetPkg/DxeIpl/DxeIpl.inf
@@ -37,6 +37,7 @@
BaseMemoryLib
PrintLib
ReportStatusCodeLib
+ IoLib
[Sources.common]
DxeIpl.h
@@ -53,18 +54,14 @@
Debug.h
[Sources.x64]
- X64/CpuIoAccess.asm
- X64/EnterDxeCore.asm
+ X64/EnterDxeCore.c
X64/Paging.c
X64/VirtualMemory.h
[Sources.Ia32]
- Ia32/CpuIoAccess.asm
- Ia32/EnterDxeCore.asm
+ Ia32/EnterDxeCore.c
Ia32/Paging.c
Ia32/VirtualMemory.h
- Ia32/CpuIoAccessGnu.c | GCC
- Ia32/EnterDxeCoreGnu.c | GCC
#[BuildOptions.common]
#MSFT:*_*_IA32_DLINK_FLAGS = /out:"$(BIN_DIR)\SecMain.exe" /base:0x10000000 /pdb:"$(BIN_DIR)\SecMain.pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib
diff --git a/DuetPkg/DxeIpl/HobGeneration.c b/DuetPkg/DxeIpl/HobGeneration.c
index 0158ea7884..fcb2516254 100644
--- a/DuetPkg/DxeIpl/HobGeneration.c
+++ b/DuetPkg/DxeIpl/HobGeneration.c
@@ -24,7 +24,7 @@ Revision History:
#include "Debug.h"
#define EFI_DXE_FILE_GUID \
- { 0xb1644c1a, 0xc16a, 0x4c5b, 0x88, 0xde, 0xea, 0xfb, 0xa9, 0x7e, 0x74, 0xd8 }
+ { 0xb1644c1a, 0xc16a, 0x4c5b, {0x88, 0xde, 0xea, 0xfb, 0xa9, 0x7e, 0x74, 0xd8 }}
#define CPUID_EXTENDED_ADD_SIZE 0x80000008
@@ -92,7 +92,7 @@ HOB_TEMPLATE gHobTemplate = {
0x0, // EFI_PHYSICAL_ADDRESS MemoryBaseAddress;
0x0, // UINT64 MemoryLength;
EfiBootServicesData, // EFI_MEMORY_TYPE MemoryType;
- 0, 0, 0, 0 // Reserved Reserved[4];
+ {0, 0, 0, 0} // Reserved Reserved[4];
}
},
{ // MemoryAllocation for HOB's & Images
@@ -191,10 +191,14 @@ HOB_TEMPLATE gHobTemplate = {
0x0 // EFI_PHYSICAL_ADDRESS of EntryPoint;
},
{ // Memory Map Hints to reduce fragmentation in the memory map
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (MEMORY_TYPE_INFORMATION_HOB), // Hob size
- 0, // reserved
- EFI_MEMORY_TYPE_INFORMATION_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (MEMORY_TYPE_INFORMATION_HOB), // Hob size
+ 0, // reserved
+ },
+ EFI_MEMORY_TYPE_INFORMATION_GUID
+ },
{
{
EfiACPIReclaimMemory,
@@ -239,31 +243,47 @@ HOB_TEMPLATE gHobTemplate = {
}
},
{ // Pointer to ACPI Table
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (TABLE_HOB), // Hob size
- 0, // reserved
- EFI_ACPI_TABLE_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (TABLE_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_ACPI_TABLE_GUID
+ },
0
},
{ // Pointer to ACPI20 Table
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (TABLE_HOB), // Hob size
- 0, // reserved
- EFI_ACPI_20_TABLE_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (TABLE_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_ACPI_20_TABLE_GUID
+ },
0
},
{ // Pointer to SMBIOS Table
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (TABLE_HOB), // Hob size
- 0, // reserved
- EFI_SMBIOS_TABLE_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (TABLE_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_SMBIOS_TABLE_GUID
+ },
0
},
{ // Pointer to MPS Table
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (TABLE_HOB), // Hob size
- 0, // reserved
- EFI_MPS_TABLE_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (TABLE_HOB), // Hob size
+ 0, // reserved
+ },
+ EFI_MPS_TABLE_GUID
+ },
0
},
/**
@@ -304,25 +324,37 @@ HOB_TEMPLATE gHobTemplate = {
},
**/
{ // Pointer to ReportStatusCode
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (PROTOCOL_HOB), // Hob size
- 0, // reserved
- EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (PROTOCOL_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_STATUS_CODE_RUNTIME_PROTOCOL_GUID
+ },
NULL
},
{ // EFILDR Memory Descriptor
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (MEMORY_DESC_HOB), // Hob size
- 0, // reserved
- EFI_LDR_MEMORY_DESCRIPTOR_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (MEMORY_DESC_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_LDR_MEMORY_DESCRIPTOR_GUID
+ },
0,
NULL
},
{ // Pci Express Base Address Hob
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (PCI_EXPRESS_BASE_HOB), // Hob size
- 0, // reserved
- EFI_PCI_EXPRESS_BASE_ADDRESS_GUID,
+ {
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (PCI_EXPRESS_BASE_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_PCI_EXPRESS_BASE_ADDRESS_GUID
+ },
{
0,
0,
@@ -330,12 +362,18 @@ HOB_TEMPLATE gHobTemplate = {
}
},
{ // Acpi Description Hob
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (ACPI_DESCRIPTION_HOB), // Hob size
- 0, // reserved
- EFI_ACPI_DESCRIPTION_GUID,
{
- 0,
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (ACPI_DESCRIPTION_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_ACPI_DESCRIPTION_GUID
+ },
+ {
+ {
+ 0,
+ },
}
},
{ // NV Storage FV Resource
@@ -356,21 +394,27 @@ HOB_TEMPLATE gHobTemplate = {
NV_STORAGE_FVB_SIZE // ResourceLength
},
{ // FVB holding NV Storage
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (FVB_HOB),
- 0,
- EFI_FLASH_MAP_HOB_GUID,
{
- 0, 0, 0, // Reserved[3]
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (FVB_HOB),
+ 0
+ },
+ EFI_FLASH_MAP_HOB_GUID
+ },
+ {
+ {0, 0, 0}, // Reserved[3]
EFI_FLASH_AREA_GUID_DEFINED, // AreaType
EFI_SYSTEM_NV_DATA_HOB_GUID, // AreaTypeGuid
1,
{
- EFI_FLASH_AREA_FV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
- 0, // SubAreaData.Reserved
- 0, // SubAreaData.Base (Fixed later)
- NV_STORAGE_FVB_SIZE, // SubAreaData.Length
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ {
+ EFI_FLASH_AREA_FV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
+ 0, // SubAreaData.Reserved
+ 0, // SubAreaData.Base (Fixed later)
+ NV_STORAGE_FVB_SIZE, // SubAreaData.Length
+ EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ }
},
0, // VolumeSignature (Fixed later)
NV_STORAGE_FILE_PATH, // Mapped file without padding
@@ -381,21 +425,27 @@ HOB_TEMPLATE gHobTemplate = {
}
},
{ // NV Storage Hob
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (FVB_HOB), // Hob size
- 0, // reserved
- EFI_FLASH_MAP_HOB_GUID,
{
- 0, 0, 0, // Reserved[3]
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (FVB_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_FLASH_MAP_HOB_GUID
+ },
+ {
+ {0, 0, 0}, // Reserved[3]
EFI_FLASH_AREA_EFI_VARIABLES, // AreaType
{ 0 }, // AreaTypeGuid
1,
{
- EFI_FLASH_AREA_SUBFV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
- 0, // SubAreaData.Reserved
- 0, // SubAreaData.Base (Fixed later)
- NV_STORAGE_SIZE, // SubAreaData.Length
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ {
+ EFI_FLASH_AREA_SUBFV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
+ 0, // SubAreaData.Reserved
+ 0, // SubAreaData.Base (Fixed later)
+ NV_STORAGE_SIZE, // SubAreaData.Length
+ EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ }
},
0,
NV_STORAGE_FILE_PATH,
@@ -404,21 +454,27 @@ HOB_TEMPLATE gHobTemplate = {
}
},
{ // FVB holding FTW spaces including Working & Spare space
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (FVB_HOB),
- 0,
- EFI_FLASH_MAP_HOB_GUID,
{
- 0, 0, 0, // Reserved[3]
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (FVB_HOB),
+ 0
+ },
+ EFI_FLASH_MAP_HOB_GUID
+ },
+ {
+ {0, 0, 0}, // Reserved[3]
EFI_FLASH_AREA_GUID_DEFINED, // AreaType
EFI_SYSTEM_NV_DATA_HOB_GUID, // AreaTypeGuid
1,
{
- EFI_FLASH_AREA_FV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
- 0, // SubAreaData.Reserved
- 0, // SubAreaData.Base (Fixed later)
- NV_FTW_FVB_SIZE, // SubAreaData.Length
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ {
+ EFI_FLASH_AREA_FV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
+ 0, // SubAreaData.Reserved
+ 0, // SubAreaData.Base (Fixed later)
+ NV_FTW_FVB_SIZE, // SubAreaData.Length
+ EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ }
},
0,
L"", // Empty String indicates using memory
@@ -427,21 +483,27 @@ HOB_TEMPLATE gHobTemplate = {
}
},
{ // NV Ftw working Hob
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (FVB_HOB), // Hob size
- 0, // reserved
- EFI_FLASH_MAP_HOB_GUID,
{
- 0, 0, 0, // Reserved[3]
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (FVB_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_FLASH_MAP_HOB_GUID
+ },
+ {
+ {0, 0, 0}, // Reserved[3]
EFI_FLASH_AREA_FTW_STATE, // AreaType
{ 0 }, // AreaTypeGuid
1,
{
- EFI_FLASH_AREA_SUBFV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
- 0, // SubAreaData.Reserved
- 0, // SubAreaData.Base (Fixed later)
- NV_FTW_WORKING_SIZE, // SubAreaData.Length
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ {
+ EFI_FLASH_AREA_SUBFV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
+ 0, // SubAreaData.Reserved
+ 0, // SubAreaData.Base (Fixed later)
+ NV_FTW_WORKING_SIZE, // SubAreaData.Length
+ EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ }
},
0, // VolumeSignature
L"",
@@ -450,21 +512,27 @@ HOB_TEMPLATE gHobTemplate = {
}
},
{ // NV Ftw spare Hob
- EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
- sizeof (FVB_HOB), // Hob size
- 0, // reserved
- EFI_FLASH_MAP_HOB_GUID,
{
- 0, 0, 0, // Reserved[3]
+ {
+ EFI_HOB_TYPE_GUID_EXTENSION, // Hob type
+ sizeof (FVB_HOB), // Hob size
+ 0 // reserved
+ },
+ EFI_FLASH_MAP_HOB_GUID
+ },
+ {
+ {0, 0, 0}, // Reserved[3]
EFI_FLASH_AREA_FTW_BACKUP, // AreaType
{ 0 }, // AreaTypeGuid
1,
{
- EFI_FLASH_AREA_SUBFV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
- 0, // SubAreaData.Reserved
- 0, // SubAreaData.Base (Fixed later)
- NV_FTW_SPARE_SIZE, // SubAreaData.Length
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ {
+ EFI_FLASH_AREA_SUBFV | EFI_FLASH_AREA_MEMMAPPED_FV, // SubAreaData.Attributes
+ 0, // SubAreaData.Reserved
+ 0, // SubAreaData.Base (Fixed later)
+ NV_FTW_SPARE_SIZE, // SubAreaData.Length
+ EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID // SubAreaData.FileSystem
+ }
},
0,
L"",
diff --git a/DuetPkg/DxeIpl/HobGeneration.h b/DuetPkg/DxeIpl/HobGeneration.h
index e6fb9f0057..61d2e9966f 100644
--- a/DuetPkg/DxeIpl/HobGeneration.h
+++ b/DuetPkg/DxeIpl/HobGeneration.h
@@ -32,7 +32,7 @@ Revision History:
#define NV_STORAGE_STATE 0x19000
#define EFI_LDR_MEMORY_DESCRIPTOR_GUID \
- { 0x7701d7e5, 0x7d1d, 0x4432, 0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60 }
+ { 0x7701d7e5, 0x7d1d, 0x4432, {0xa4, 0x68, 0x67, 0x3d, 0xab, 0x8a, 0xde, 0x60}}
#pragma pack(1)
diff --git a/DuetPkg/DxeIpl/Ia32/CpuIoAccess.asm b/DuetPkg/DxeIpl/Ia32/CpuIoAccess.asm
deleted file mode 100644
index 00a80ef75b..0000000000
--- a/DuetPkg/DxeIpl/Ia32/CpuIoAccess.asm
+++ /dev/null
@@ -1,62 +0,0 @@
- title CpuIoAccess.asm
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-; CpuIoAccess.asm
-;
-; Abstract:
-; CPU IO Abstraction
-;
-;------------------------------------------------------------------------------
-
- .686
- .MODEL FLAT,C
- .CODE
-
-
-UINT8 TYPEDEF BYTE
-UINT16 TYPEDEF WORD
-UINT32 TYPEDEF DWORD
-UINT64 TYPEDEF QWORD
-UINTN TYPEDEF UINT32
-
-
-
-;------------------------------------------------------------------------------
-; UINT8
-; CpuIoRead8 (
-; IN UINT16 Port
-; )
-;------------------------------------------------------------------------------
-CpuIoRead8 PROC PUBLIC Port:UINT16
- mov dx, Port
- in al, dx
- ret
-CpuIoRead8 ENDP
-
-
-;------------------------------------------------------------------------------
-; VOID
-; CpuIoWrite8 (
-; IN UINT16 Port,
-; IN UINT32 Data
-; )
-;------------------------------------------------------------------------------
-CpuIoWrite8 PROC PUBLIC Port:UINT16, Data:UINT32
- mov eax, Data
- mov dx, Port
- out dx, al
- ret
-CpuIoWrite8 ENDP
-
-
-END \ No newline at end of file
diff --git a/DuetPkg/DxeIpl/Ia32/CpuIoAccessGnu.c b/DuetPkg/DxeIpl/Ia32/CpuIoAccessGnu.c
deleted file mode 100644
index 8e9ee2a073..0000000000
--- a/DuetPkg/DxeIpl/Ia32/CpuIoAccessGnu.c
+++ /dev/null
@@ -1,27 +0,0 @@
-UINT8
-EFIAPI
-CpuIoRead8 (
- IN UINT16 Port
- )
-{
- UINT8 Data;
- asm ( "inb %1, %0"
- : "=a"(Data)
- : "d"(Port)
- );
- return Data;
-}
-
-VOID
-EFIAPI
-CpuIoWrite8 (
- IN UINT16 Port,
- IN UINT32 Data
- )
-{
- asm ( "outb %1, %0"
- : /* No outputs */
- : "d"(Port)
- , "a"((UINT8)Data)
- );
-} \ No newline at end of file
diff --git a/DuetPkg/DxeIpl/Ia32/EnterDxeCore.asm b/DuetPkg/DxeIpl/Ia32/EnterDxeCore.asm
deleted file mode 100644
index 0689a824c3..0000000000
--- a/DuetPkg/DxeIpl/Ia32/EnterDxeCore.asm
+++ /dev/null
@@ -1,64 +0,0 @@
- TITLE EnterDxeCore.asm: Assembly code for the entering DxeCore
-;------------------------------------------------------------------------------
-;*
-;* Copyright 2006, Intel Corporation
-;* All rights reserved. This program and the accompanying materials
-;* are licensed and made available under the terms and conditions of the BSD License
-;* which accompanies this distribution. The full text of the license may be found at
-;* http://opensource.org/licenses/bsd-license.php
-;*
-;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;*
-;* EnterDxeCore.asm
-;*
-;* Abstract:
-;*
-;------------------------------------------------------------------------------
-
-.686p
-.model flat
-
-.code
-.stack
-.MMX
-.XMM
-
-;
-; VOID
-; EnterDxeMain (
-; IN VOID *StackTop,
-; IN VOID *DxeCoreEntryPoint,
-; IN VOID *Hob,
-; IN VOID *PageTable
-; )
-;
-EnterDxeMain PROC C \
- StackTop:DWORD, \
- DxeCoreEntryPoint:DWORD, \
- Hob:DWORD, \
- PageTable:DWORD
-
- mov eax, PageTable
-; mov cr3, eax ; load page table
-; mov eax, cr4
-; bts eax, 4 ; enable CR4.PSE
-; mov cr4, eax
-; mov eax, cr0
-; bts eax, 31 ; enable CR0.PG
-; mov cr0, eax
- mov ecx, DxeCoreEntryPoint
- mov eax, StackTop
- mov esp, eax
- mov edx, Hob
- push edx
- push 0
- jmp ecx
-
-; should never get here
- jmp $
- ret
-
-EnterDxeMain ENDP
-
-END
diff --git a/DuetPkg/DxeIpl/Ia32/EnterDxeCore.c b/DuetPkg/DxeIpl/Ia32/EnterDxeCore.c
new file mode 100644
index 0000000000..b8449140e7
--- /dev/null
+++ b/DuetPkg/DxeIpl/Ia32/EnterDxeCore.c
@@ -0,0 +1,31 @@
+/** @file
+ IA32 specific code to enter DxeCore
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#include "DxeIpl.h"
+
+VOID
+EnterDxeMain (
+ IN VOID *StackTop,
+ IN VOID *DxeCoreEntryPoint,
+ IN VOID *Hob,
+ IN VOID *PageTable
+ )
+{
+ SwitchStack (
+ (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,
+ Hob,
+ NULL,
+ StackTop
+ );
+}
diff --git a/DuetPkg/DxeIpl/Ia32/EnterDxeCoreGnu.c b/DuetPkg/DxeIpl/Ia32/EnterDxeCoreGnu.c
deleted file mode 100644
index c502f8411b..0000000000
--- a/DuetPkg/DxeIpl/Ia32/EnterDxeCoreGnu.c
+++ /dev/null
@@ -1,16 +0,0 @@
-VOID
-EnterDxeMain (
- IN VOID *StackTop,
- IN VOID *DxeCoreEntryPoint,
- IN VOID *Hob,
- IN VOID *PageTable
- )
-{
- __asm__ ( "movl %0, %%esp \n\t"
- "pushl %2 \n\t"
- "pushl $0 \n\t"
- "movl %1, %%ecx \n\t"
- "jmp %%ecx"
- ::"q"(StackTop), "q"(DxeCoreEntryPoint), "q"(Hob)
- );
-} \ No newline at end of file
diff --git a/DuetPkg/DxeIpl/SerialStatusCode.c b/DuetPkg/DxeIpl/SerialStatusCode.c
index 4c5badf8f5..77b26690f8 100644
--- a/DuetPkg/DxeIpl/SerialStatusCode.c
+++ b/DuetPkg/DxeIpl/SerialStatusCode.c
@@ -542,21 +542,6 @@ STATUS_CODE_LOOKUP_TABLE mOperationToken[] = {
};
-//
-// Private function declarations
-//
-UINT8
-CpuIoRead8 (
- UINT16 Port
- );
-
-VOID
-CpuIoWrite8 (
- UINT16 Port,
- UINT32 Data
- );
-
-
EFI_STATUS
MatchString (
IN STATUS_CODE_LOOKUP_TABLE *Table,
@@ -648,10 +633,10 @@ Returns:
// Wait for the serail port to be ready.
//
do {
- Data = CpuIoRead8 ((UINT16) (gComBase + LSR_OFFSET));
+ Data = IoRead8 (gComBase + LSR_OFFSET);
} while ((Data & LSR_TXRDY) == 0);
- CpuIoWrite8 (gComBase, Character);
+ IoWrite8 (gComBase, Character);
}
VOID
@@ -865,19 +850,19 @@ Returns:
// Set communications format
//
OutputData = (UINT8)((DLAB << 7) | ((gBreakSet << 6) | ((gParity << 3) | ((gStop << 2) | Data))));
- CpuIoWrite8 ((UINT16) (gComBase + LCR_OFFSET), OutputData);
+ IoWrite8 (gComBase + LCR_OFFSET, OutputData);
//
// Configure baud rate
//
- CpuIoWrite8 ((UINT16) (gComBase + BAUD_HIGH_OFFSET), (UINT8)(Divisor >> 8));
- CpuIoWrite8 ((UINT16) (gComBase + BAUD_LOW_OFFSET), (UINT8)(Divisor & 0xff));
+ IoWrite8 (gComBase + BAUD_HIGH_OFFSET, (UINT8)(Divisor >> 8));
+ IoWrite8 (gComBase + BAUD_LOW_OFFSET, (UINT8)(Divisor & 0xff));
//
// Switch back to bank 0
//
OutputData = (UINT8)((~DLAB<<7)|((gBreakSet<<6)|((gParity<<3)|((gStop<<2)| Data))));
- CpuIoWrite8 ((UINT16) (gComBase + LCR_OFFSET), OutputData);
+ IoWrite8 (gComBase + LCR_OFFSET, OutputData);
*ReportStatusCode = SerialReportStatusCode;
}
diff --git a/DuetPkg/DxeIpl/X64/CpuIoAccess.asm b/DuetPkg/DxeIpl/X64/CpuIoAccess.asm
deleted file mode 100644
index f1515e8c84..0000000000
--- a/DuetPkg/DxeIpl/X64/CpuIoAccess.asm
+++ /dev/null
@@ -1,52 +0,0 @@
- title CpuIoAccess.asm
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2006 - 2007, Intel Corporation
-; All rights reserved. This program and the accompanying materials
-; are licensed and made available under the terms and conditions of the BSD License
-; which accompanies this distribution. The full text of the license may be found at
-; http://opensource.org/licenses/bsd-license.php
-;
-; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;
-; Module Name:
-; CpuIoAccess.asm
-;
-; Abstract:
-; CPU IO Abstraction
-;
-;------------------------------------------------------------------------------
-
-
-.code
-
-;------------------------------------------------------------------------------
-; UINT8
-; CpuIoRead8 (
-; UINT16 Port // rcx
-; )
-;------------------------------------------------------------------------------
-CpuIoRead8 PROC PUBLIC
- xor eax, eax
- mov dx, cx
- in al, dx
- ret
-CpuIoRead8 ENDP
-
-;------------------------------------------------------------------------------
-; VOID
-; CpuIoWrite8 (
-; UINT16 Port, // rcx
-; UINT32 Data // rdx
-; )
-;------------------------------------------------------------------------------
-CpuIoWrite8 PROC PUBLIC
- mov eax, edx
- mov dx, cx
- out dx, al
- ret
-CpuIoWrite8 ENDP
-
-
-END
diff --git a/DuetPkg/DxeIpl/X64/EnterDxeCore.asm b/DuetPkg/DxeIpl/X64/EnterDxeCore.asm
deleted file mode 100644
index a1eada3905..0000000000
--- a/DuetPkg/DxeIpl/X64/EnterDxeCore.asm
+++ /dev/null
@@ -1,45 +0,0 @@
- TITLE EnterDxeCore.asm: Assembly code for the entering DxeCore
-;------------------------------------------------------------------------------
-;*
-;* Copyright 2006, Intel Corporation
-;* All rights reserved. This program and the accompanying materials
-;* are licensed and made available under the terms and conditions of the BSD License
-;* which accompanies this distribution. The full text of the license may be found at
-;* http://opensource.org/licenses/bsd-license.php
-;*
-;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-;*
-;* EnterDxeCore.asm
-;*
-;* Abstract:
-;*
-;------------------------------------------------------------------------------
-
-.code
-
-;
-; VOID
-; EnterDxeMain (
-; IN VOID *StackTop, // rcx
-; IN VOID *DxeCoreEntryPoint, // rdx
-; IN VOID *Hob, // r8
-; IN VOID *PageTable // r9
-; )
-;
-EnterDxeMain PROC
-
- mov cr3, r9
- sub rcx, 32
- mov rsp, rcx
- mov rcx, r8
- push 0
- jmp rdx
-
-; should never get here
- jmp $
- ret
-
-EnterDxeMain ENDP
-
-END
diff --git a/DuetPkg/DxeIpl/X64/EnterDxeCore.c b/DuetPkg/DxeIpl/X64/EnterDxeCore.c
new file mode 100644
index 0000000000..0443041f24
--- /dev/null
+++ b/DuetPkg/DxeIpl/X64/EnterDxeCore.c
@@ -0,0 +1,32 @@
+/** @file
+ x64 specific code to enter DxeCore
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#include "DxeIpl.h"
+
+VOID
+EnterDxeMain (
+ IN VOID *StackTop,
+ IN VOID *DxeCoreEntryPoint,
+ IN VOID *Hob,
+ IN VOID *PageTable
+ )
+{
+ AsmWriteCr3 ((UINTN) PageTable);
+ SwitchStack (
+ (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,
+ Hob,
+ NULL,
+ StackTop
+ );
+}