]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
MdeModulePkg: Apply uncrustify changes
[mirror_edk2.git] / MdeModulePkg / Core / DxeIplPeim / Ia32 / DxeLoadFunc.c
index b65b01c9e55ff968e398cae897c1b5d47d90e5c6..fdeaaa39d88e277388cd2e59a8c464a47987ddba 100644 (file)
@@ -11,43 +11,61 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include "DxeIpl.h"\r
 #include "VirtualMemory.h"\r
 \r
-#define IDT_ENTRY_COUNT       32\r
+#define IDT_ENTRY_COUNT  32\r
 \r
 typedef struct _X64_IDT_TABLE {\r
   //\r
   // Reserved 4 bytes preceding PeiService and IdtTable,\r
   // since IDT base address should be 8-byte alignment.\r
   //\r
-  UINT32                   Reserved;\r
-  CONST EFI_PEI_SERVICES   **PeiService;\r
-  X64_IDT_GATE_DESCRIPTOR  IdtTable[IDT_ENTRY_COUNT];\r
+  UINT32                     Reserved;\r
+  CONST EFI_PEI_SERVICES     **PeiService;\r
+  X64_IDT_GATE_DESCRIPTOR    IdtTable[IDT_ENTRY_COUNT];\r
 } X64_IDT_TABLE;\r
 \r
 //\r
 // Global Descriptor Table (GDT)\r
 //\r
-GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT gGdtEntries[] = {\r
-/* selector { Global Segment Descriptor                              } */\r
-/* 0x00 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}}, //null descriptor\r
-/* 0x08 */  {{0xffff, 0,  0,  0x2,  1,  0,  1,  0xf,  0,  0, 1,  1,  0}}, //linear data segment descriptor\r
-/* 0x10 */  {{0xffff, 0,  0,  0xf,  1,  0,  1,  0xf,  0,  0, 1,  1,  0}}, //linear code segment descriptor\r
-/* 0x18 */  {{0xffff, 0,  0,  0x3,  1,  0,  1,  0xf,  0,  0, 1,  1,  0}}, //system data segment descriptor\r
-/* 0x20 */  {{0xffff, 0,  0,  0xa,  1,  0,  1,  0xf,  0,  0, 1,  1,  0}}, //system code segment descriptor\r
-/* 0x28 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}}, //spare segment descriptor\r
-/* 0x30 */  {{0xffff, 0,  0,  0x2,  1,  0,  1,  0xf,  0,  0, 1,  1,  0}}, //system data segment descriptor\r
-/* 0x38 */  {{0xffff, 0,  0,  0xa,  1,  0,  1,  0xf,  0,  1, 0,  1,  0}}, //system code segment descriptor\r
-/* 0x40 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}}, //spare segment descriptor\r
+GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT  gGdtEntries[] = {\r
+  /* selector { Global Segment Descriptor                              } */\r
+  /* 0x00 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },                                                                      // null descriptor\r
+  /* 0x08 */ {\r
+    { 0xffff, 0, 0, 0x2, 1, 0, 1, 0xf, 0, 0, 1, 1, 0 }\r
+  },                                                                      // linear data segment descriptor\r
+  /* 0x10 */ {\r
+    { 0xffff, 0, 0, 0xf, 1, 0, 1, 0xf, 0, 0, 1, 1, 0 }\r
+  },                                                                      // linear code segment descriptor\r
+  /* 0x18 */ {\r
+    { 0xffff, 0, 0, 0x3, 1, 0, 1, 0xf, 0, 0, 1, 1, 0 }\r
+  },                                                                      // system data segment descriptor\r
+  /* 0x20 */ {\r
+    { 0xffff, 0, 0, 0xa, 1, 0, 1, 0xf, 0, 0, 1, 1, 0 }\r
+  },                                                                      // system code segment descriptor\r
+  /* 0x28 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },                                                                      // spare segment descriptor\r
+  /* 0x30 */ {\r
+    { 0xffff, 0, 0, 0x2, 1, 0, 1, 0xf, 0, 0, 1, 1, 0 }\r
+  },                                                                      // system data segment descriptor\r
+  /* 0x38 */ {\r
+    { 0xffff, 0, 0, 0xa, 1, 0, 1, 0xf, 0, 1, 0, 1, 0 }\r
+  },                                                                      // system code segment descriptor\r
+  /* 0x40 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },                                                                      // spare segment descriptor\r
 };\r
 \r
 //\r
 // IA32 Gdt register\r
 //\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR gGdt = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR  gGdt = {\r
   sizeof (gGdtEntries) - 1,\r
-  (UINTN) gGdtEntries\r
-  };\r
+  (UINTN)gGdtEntries\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED  IA32_DESCRIPTOR gLidtDescriptor = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED  IA32_DESCRIPTOR  gLidtDescriptor = {\r
   sizeof (X64_IDT_GATE_DESCRIPTOR) * IDT_ENTRY_COUNT - 1,\r
   0\r
 };\r
@@ -64,21 +82,21 @@ GLOBAL_REMOVE_IF_UNREFERENCED  IA32_DESCRIPTOR gLidtDescriptor = {
 **/\r
 UINTN\r
 Create4GPageTablesIa32Pae (\r
-  IN EFI_PHYSICAL_ADDRESS   StackBase,\r
-  IN UINTN                  StackSize\r
+  IN EFI_PHYSICAL_ADDRESS  StackBase,\r
+  IN UINTN                 StackSize\r
   )\r
 {\r
-  UINT8                                         PhysicalAddressBits;\r
-  EFI_PHYSICAL_ADDRESS                          PhysicalAddress;\r
-  UINTN                                         IndexOfPdpEntries;\r
-  UINTN                                         IndexOfPageDirectoryEntries;\r
-  UINT32                                        NumberOfPdpEntriesNeeded;\r
-  PAGE_MAP_AND_DIRECTORY_POINTER                *PageMap;\r
-  PAGE_MAP_AND_DIRECTORY_POINTER                *PageDirectoryPointerEntry;\r
-  PAGE_TABLE_ENTRY                              *PageDirectoryEntry;\r
-  UINTN                                         TotalPagesNum;\r
-  UINTN                                         PageAddress;\r
-  UINT64                                        AddressEncMask;\r
+  UINT8                           PhysicalAddressBits;\r
+  EFI_PHYSICAL_ADDRESS            PhysicalAddress;\r
+  UINTN                           IndexOfPdpEntries;\r
+  UINTN                           IndexOfPageDirectoryEntries;\r
+  UINT32                          NumberOfPdpEntriesNeeded;\r
+  PAGE_MAP_AND_DIRECTORY_POINTER  *PageMap;\r
+  PAGE_MAP_AND_DIRECTORY_POINTER  *PageDirectoryPointerEntry;\r
+  PAGE_TABLE_ENTRY                *PageDirectoryEntry;\r
+  UINTN                           TotalPagesNum;\r
+  UINTN                           PageAddress;\r
+  UINT64                          AddressEncMask;\r
 \r
   //\r
   // Make sure AddressEncMask is contained to smallest supported address field\r
@@ -90,53 +108,54 @@ Create4GPageTablesIa32Pae (
   //\r
   // Calculate the table entries needed.\r
   //\r
-  NumberOfPdpEntriesNeeded = (UINT32) LShiftU64 (1, (PhysicalAddressBits - 30));\r
+  NumberOfPdpEntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30));\r
 \r
   TotalPagesNum = NumberOfPdpEntriesNeeded + 1;\r
-  PageAddress = (UINTN) AllocatePageTableMemory (TotalPagesNum);\r
+  PageAddress   = (UINTN)AllocatePageTableMemory (TotalPagesNum);\r
   ASSERT (PageAddress != 0);\r
 \r
-  PageMap = (VOID *) PageAddress;\r
+  PageMap      = (VOID *)PageAddress;\r
   PageAddress += SIZE_4KB;\r
 \r
   PageDirectoryPointerEntry = PageMap;\r
-  PhysicalAddress = 0;\r
+  PhysicalAddress           = 0;\r
 \r
   for (IndexOfPdpEntries = 0; IndexOfPdpEntries < NumberOfPdpEntriesNeeded; IndexOfPdpEntries++, PageDirectoryPointerEntry++) {\r
     //\r
     // Each Directory Pointer entries points to a page of Page Directory entires.\r
     // So allocate space for them and fill them in in the IndexOfPageDirectoryEntries loop.\r
     //\r
-    PageDirectoryEntry = (VOID *) PageAddress;\r
-    PageAddress += SIZE_4KB;\r
+    PageDirectoryEntry = (VOID *)PageAddress;\r
+    PageAddress       += SIZE_4KB;\r
 \r
     //\r
     // Fill in a Page Directory Pointer Entries\r
     //\r
-    PageDirectoryPointerEntry->Uint64 = (UINT64) (UINTN) PageDirectoryEntry | AddressEncMask;\r
+    PageDirectoryPointerEntry->Uint64       = (UINT64)(UINTN)PageDirectoryEntry | AddressEncMask;\r
     PageDirectoryPointerEntry->Bits.Present = 1;\r
 \r
     for (IndexOfPageDirectoryEntries = 0; IndexOfPageDirectoryEntries < 512; IndexOfPageDirectoryEntries++, PageDirectoryEntry++, PhysicalAddress += SIZE_2MB) {\r
-      if ((IsNullDetectionEnabled () && PhysicalAddress == 0)\r
-          || ((PhysicalAddress < StackBase + StackSize)\r
-              && ((PhysicalAddress + SIZE_2MB) > StackBase))) {\r
+      if (  (IsNullDetectionEnabled () && (PhysicalAddress == 0))\r
+         || (  (PhysicalAddress < StackBase + StackSize)\r
+            && ((PhysicalAddress + SIZE_2MB) > StackBase)))\r
+      {\r
         //\r
         // Need to split this 2M page that covers stack range.\r
         //\r
-        Split2MPageTo4K (PhysicalAddress, (UINT64 *) PageDirectoryEntry, StackBase, StackSize, 0, 0);\r
+        Split2MPageTo4K (PhysicalAddress, (UINT64 *)PageDirectoryEntry, StackBase, StackSize, 0, 0);\r
       } else {\r
         //\r
         // Fill in the Page Directory entries\r
         //\r
-        PageDirectoryEntry->Uint64 = (UINT64) PhysicalAddress | AddressEncMask;\r
+        PageDirectoryEntry->Uint64         = (UINT64)PhysicalAddress | AddressEncMask;\r
         PageDirectoryEntry->Bits.ReadWrite = 1;\r
-        PageDirectoryEntry->Bits.Present = 1;\r
-        PageDirectoryEntry->Bits.MustBe1 = 1;\r
+        PageDirectoryEntry->Bits.Present   = 1;\r
+        PageDirectoryEntry->Bits.MustBe1   = 1;\r
       }\r
     }\r
   }\r
 \r
-  for (; IndexOfPdpEntries < 512; IndexOfPdpEntries++, PageDirectoryPointerEntry++) {\r
+  for ( ; IndexOfPdpEntries < 512; IndexOfPdpEntries++, PageDirectoryPointerEntry++) {\r
     ZeroMem (\r
       PageDirectoryPointerEntry,\r
       sizeof (PAGE_MAP_AND_DIRECTORY_POINTER)\r
@@ -149,7 +168,7 @@ Create4GPageTablesIa32Pae (
   //\r
   EnablePageTableProtection ((UINTN)PageMap, FALSE);\r
 \r
-  return (UINTN) PageMap;\r
+  return (UINTN)PageMap;\r
 }\r
 \r
 /**\r
@@ -164,9 +183,9 @@ IsIa32PaeSupport (
   VOID\r
   )\r
 {\r
-  UINT32            RegEax;\r
-  UINT32            RegEdx;\r
-  BOOLEAN           Ia32PaeSupport;\r
+  UINT32   RegEax;\r
+  UINT32   RegEdx;\r
+  BOOLEAN  Ia32PaeSupport;\r
 \r
   Ia32PaeSupport = FALSE;\r
   AsmCpuid (0x0, &RegEax, NULL, NULL, NULL);\r
@@ -228,23 +247,23 @@ ToBuildPageTable (
 **/\r
 VOID\r
 HandOffToDxeCore (\r
-  IN EFI_PHYSICAL_ADDRESS   DxeCoreEntryPoint,\r
-  IN EFI_PEI_HOB_POINTERS   HobList\r
+  IN EFI_PHYSICAL_ADDRESS  DxeCoreEntryPoint,\r
+  IN EFI_PEI_HOB_POINTERS  HobList\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  EFI_PHYSICAL_ADDRESS      BaseOfStack;\r
-  EFI_PHYSICAL_ADDRESS      TopOfStack;\r
-  UINTN                     PageTables;\r
-  X64_IDT_GATE_DESCRIPTOR   *IdtTable;\r
-  UINTN                     SizeOfTemplate;\r
-  VOID                      *TemplateBase;\r
-  EFI_PHYSICAL_ADDRESS      VectorAddress;\r
-  UINT32                    Index;\r
-  X64_IDT_TABLE             *IdtTableForX64;\r
-  EFI_VECTOR_HANDOFF_INFO   *VectorInfo;\r
-  EFI_PEI_VECTOR_HANDOFF_INFO_PPI *VectorHandoffInfoPpi;\r
-  BOOLEAN                   BuildPageTablesIa32Pae;\r
+  EFI_STATUS                       Status;\r
+  EFI_PHYSICAL_ADDRESS             BaseOfStack;\r
+  EFI_PHYSICAL_ADDRESS             TopOfStack;\r
+  UINTN                            PageTables;\r
+  X64_IDT_GATE_DESCRIPTOR          *IdtTable;\r
+  UINTN                            SizeOfTemplate;\r
+  VOID                             *TemplateBase;\r
+  EFI_PHYSICAL_ADDRESS             VectorAddress;\r
+  UINT32                           Index;\r
+  X64_IDT_TABLE                    *IdtTableForX64;\r
+  EFI_VECTOR_HANDOFF_INFO          *VectorInfo;\r
+  EFI_PEI_VECTOR_HANDOFF_INFO_PPI  *VectorHandoffInfoPpi;\r
+  BOOLEAN                          BuildPageTablesIa32Pae;\r
 \r
   //\r
   // Clear page 0 and mark it as allocated if NULL pointer detection is enabled.\r
@@ -257,7 +276,7 @@ HandOffToDxeCore (
   Status = PeiServicesAllocatePages (EfiBootServicesData, EFI_SIZE_TO_PAGES (STACK_SIZE), &BaseOfStack);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  if (FeaturePcdGet(PcdDxeIplSwitchToLongMode)) {\r
+  if (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) {\r
     //\r
     // Compute the top of the stack we were allocated, which is used to load X64 dxe core.\r
     // Pre-allocate a 32 bytes which confroms to x64 calling convention.\r
@@ -272,7 +291,7 @@ HandOffToDxeCore (
     //\r
     //  x64 Calling Conventions requires that the stack must be aligned to 16 bytes\r
     //\r
-    TopOfStack = (EFI_PHYSICAL_ADDRESS) (UINTN) ALIGN_POINTER (TopOfStack, 16);\r
+    TopOfStack = (EFI_PHYSICAL_ADDRESS)(UINTN)ALIGN_POINTER (TopOfStack, 16);\r
 \r
     //\r
     // Load the GDT of Go64. Since the GDT of 32-bit Tiano locates in the BS_DATA\r
@@ -308,7 +327,7 @@ HandOffToDxeCore (
 \r
     Status = PeiServicesAllocatePages (\r
                EfiBootServicesData,\r
-               EFI_SIZE_TO_PAGES(sizeof (X64_IDT_TABLE) + SizeOfTemplate * IDT_ENTRY_COUNT),\r
+               EFI_SIZE_TO_PAGES (sizeof (X64_IDT_TABLE) + SizeOfTemplate * IDT_ENTRY_COUNT),\r
                &VectorAddress\r
                );\r
     ASSERT_EFI_ERROR (Status);\r
@@ -317,28 +336,28 @@ HandOffToDxeCore (
     // Store EFI_PEI_SERVICES** in the 4 bytes immediately preceding IDT to avoid that\r
     // it may not be gotten correctly after IDT register is re-written.\r
     //\r
-    IdtTableForX64 = (X64_IDT_TABLE *) (UINTN) VectorAddress;\r
+    IdtTableForX64             = (X64_IDT_TABLE *)(UINTN)VectorAddress;\r
     IdtTableForX64->PeiService = GetPeiServicesTablePointer ();\r
 \r
-    VectorAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) (IdtTableForX64 + 1);\r
+    VectorAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)(IdtTableForX64 + 1);\r
     IdtTable      = IdtTableForX64->IdtTable;\r
     for (Index = 0; Index < IDT_ENTRY_COUNT; Index++) {\r
-      IdtTable[Index].Ia32IdtEntry.Bits.GateType    =  0x8e;\r
-      IdtTable[Index].Ia32IdtEntry.Bits.Reserved_0  =  0;\r
-      IdtTable[Index].Ia32IdtEntry.Bits.Selector    =  SYS_CODE64_SEL;\r
+      IdtTable[Index].Ia32IdtEntry.Bits.GateType   =  0x8e;\r
+      IdtTable[Index].Ia32IdtEntry.Bits.Reserved_0 =  0;\r
+      IdtTable[Index].Ia32IdtEntry.Bits.Selector   =  SYS_CODE64_SEL;\r
 \r
-      IdtTable[Index].Ia32IdtEntry.Bits.OffsetLow   = (UINT16) VectorAddress;\r
-      IdtTable[Index].Ia32IdtEntry.Bits.OffsetHigh  = (UINT16) (RShiftU64 (VectorAddress, 16));\r
-      IdtTable[Index].Offset32To63                  = (UINT32) (RShiftU64 (VectorAddress, 32));\r
-      IdtTable[Index].Reserved                      = 0;\r
+      IdtTable[Index].Ia32IdtEntry.Bits.OffsetLow  = (UINT16)VectorAddress;\r
+      IdtTable[Index].Ia32IdtEntry.Bits.OffsetHigh = (UINT16)(RShiftU64 (VectorAddress, 16));\r
+      IdtTable[Index].Offset32To63                 = (UINT32)(RShiftU64 (VectorAddress, 32));\r
+      IdtTable[Index].Reserved                     = 0;\r
 \r
-      CopyMem ((VOID *) (UINTN) VectorAddress, TemplateBase, SizeOfTemplate);\r
-      AsmVectorFixup ((VOID *) (UINTN) VectorAddress, (UINT8) Index);\r
+      CopyMem ((VOID *)(UINTN)VectorAddress, TemplateBase, SizeOfTemplate);\r
+      AsmVectorFixup ((VOID *)(UINTN)VectorAddress, (UINT8)Index);\r
 \r
       VectorAddress += SizeOfTemplate;\r
     }\r
 \r
-    gLidtDescriptor.Base = (UINTN) IdtTable;\r
+    gLidtDescriptor.Base = (UINTN)IdtTable;\r
 \r
     //\r
     // Disable interrupt of Debug timer, since new IDT table cannot handle it.\r
@@ -380,11 +399,12 @@ HandOffToDxeCore (
     if (Status == EFI_SUCCESS) {\r
       DEBUG ((DEBUG_INFO, "Vector Hand-off Info PPI is gotten, GUIDed HOB is created!\n"));\r
       VectorInfo = VectorHandoffInfoPpi->Info;\r
-      Index = 1;\r
+      Index      = 1;\r
       while (VectorInfo->Attribute != EFI_VECTOR_HANDOFF_LAST_ENTRY) {\r
-        VectorInfo ++;\r
-        Index ++;\r
+        VectorInfo++;\r
+        Index++;\r
       }\r
+\r
       BuildGuidDataHob (\r
         &gEfiVectorHandoffInfoPpiGuid,\r
         VectorHandoffInfoPpi->Info,\r
@@ -397,14 +417,14 @@ HandOffToDxeCore (
     // for safety.\r
     //\r
     TopOfStack = BaseOfStack + EFI_SIZE_TO_PAGES (STACK_SIZE) * EFI_PAGE_SIZE - CPU_STACK_ALIGNMENT;\r
-    TopOfStack = (EFI_PHYSICAL_ADDRESS) (UINTN) ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);\r
+    TopOfStack = (EFI_PHYSICAL_ADDRESS)(UINTN)ALIGN_POINTER (TopOfStack, CPU_STACK_ALIGNMENT);\r
 \r
-    PageTables = 0;\r
+    PageTables             = 0;\r
     BuildPageTablesIa32Pae = ToBuildPageTable ();\r
     if (BuildPageTablesIa32Pae) {\r
       PageTables = Create4GPageTablesIa32Pae (BaseOfStack, STACK_SIZE);\r
       if (IsEnableNonExecNeeded ()) {\r
-        EnableExecuteDisableBit();\r
+        EnableExecuteDisableBit ();\r
       }\r
     }\r
 \r
@@ -450,14 +470,14 @@ HandOffToDxeCore (
         (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,\r
         HobList.Raw,\r
         NULL,\r
-        (VOID *) (UINTN) TopOfStack\r
+        (VOID *)(UINTN)TopOfStack\r
         );\r
     } else {\r
       SwitchStack (\r
         (SWITCH_STACK_ENTRY_POINT)(UINTN)DxeCoreEntryPoint,\r
         HobList.Raw,\r
         NULL,\r
-        (VOID *) (UINTN) TopOfStack\r
+        (VOID *)(UINTN)TopOfStack\r
         );\r
     }\r
   }\r