]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Clean up DxeIpl:
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 3 Feb 2009 00:48:56 +0000 (00:48 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 3 Feb 2009 00:48:56 +0000 (00:48 +0000)
1. Remove the assembly by using IoLib & BaseLib in MdePkg
2. Refine code to pass CYGWIN GCC tool chain build

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7404 6f19259b-4bc3-4df7-8a09-765794883524

14 files changed:
DuetPkg/DxeIpl/DxeInit.c
DuetPkg/DxeIpl/DxeIpl.h
DuetPkg/DxeIpl/DxeIpl.inf
DuetPkg/DxeIpl/HobGeneration.c
DuetPkg/DxeIpl/HobGeneration.h
DuetPkg/DxeIpl/Ia32/CpuIoAccess.asm [deleted file]
DuetPkg/DxeIpl/Ia32/CpuIoAccessGnu.c [deleted file]
DuetPkg/DxeIpl/Ia32/EnterDxeCore.asm [deleted file]
DuetPkg/DxeIpl/Ia32/EnterDxeCore.c [new file with mode: 0644]
DuetPkg/DxeIpl/Ia32/EnterDxeCoreGnu.c [deleted file]
DuetPkg/DxeIpl/SerialStatusCode.c
DuetPkg/DxeIpl/X64/CpuIoAccess.asm [deleted file]
DuetPkg/DxeIpl/X64/EnterDxeCore.asm [deleted file]
DuetPkg/DxeIpl/X64/EnterDxeCore.c [new file with mode: 0644]

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