]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Csm/LegacyBiosDxe/LegacyBootSupport.c
IntelFrameworkModulePkg/LegacyBios: Use macro to enable/disable page 0
[mirror_edk2.git] / IntelFrameworkModulePkg / Csm / LegacyBiosDxe / LegacyBootSupport.c
index c2ac69ce690835ce41612d4f0e20228f90adec4a..57ab78d6484cce913a9b693d45a98b23bd73ceb3 100644 (file)
@@ -1041,7 +1041,9 @@ GenericLegacyBoot (
   //\r
   // Setup BDA and EBDA standard areas before Legacy Boot\r
   //\r
-  LegacyBiosCompleteBdaBeforeBoot (Private);\r
+  ACCESS_PAGE0_CODE (\r
+    LegacyBiosCompleteBdaBeforeBoot (Private);\r
+  );\r
   LegacyBiosCompleteStandardCmosBeforeBoot (Private);\r
 \r
   //\r
@@ -1073,10 +1075,10 @@ GenericLegacyBoot (
   // Use 182/10 to avoid floating point math.\r
   //\r
   LocalTime = (LocalTime * 182) / 10;\r
-  DisableNullDetection ();\r
-  BdaPtr    = (UINT32 *) (UINTN)0x46C;\r
-  *BdaPtr   = LocalTime;\r
-  EnableNullDetection ();\r
+  ACCESS_PAGE0_CODE (\r
+    BdaPtr    = (UINT32 *) (UINTN)0x46C;\r
+    *BdaPtr   = LocalTime;\r
+  );\r
 \r
   //\r
   // Shadow PCI ROMs. We must do this near the end since this will kick\r
@@ -1322,15 +1324,15 @@ GenericLegacyBoot (
     //          set of TIANO vectors) or takes it over.\r
     //\r
     //\r
-    DisableNullDetection ();\r
-    BaseVectorMaster = (UINT32 *) (sizeof (UINT32) * PROTECTED_MODE_BASE_VECTOR_MASTER);\r
-    for (Index = 0; Index < 8; Index++) {\r
-      Private->ThunkSavedInt[Index] = BaseVectorMaster[Index];\r
-      if (Private->ThunkSeg == (UINT16) (BaseVectorMaster[Index] >> 16)) {\r
-        BaseVectorMaster[Index] = (UINT32) (Private->BiosUnexpectedInt);\r
+    ACCESS_PAGE0_CODE (\r
+      BaseVectorMaster = (UINT32 *) (sizeof (UINT32) * PROTECTED_MODE_BASE_VECTOR_MASTER);\r
+      for (Index = 0; Index < 8; Index++) {\r
+        Private->ThunkSavedInt[Index] = BaseVectorMaster[Index];\r
+        if (Private->ThunkSeg == (UINT16) (BaseVectorMaster[Index] >> 16)) {\r
+          BaseVectorMaster[Index] = (UINT32) (Private->BiosUnexpectedInt);\r
+        }\r
       }\r
-    }\r
-    EnableNullDetection ();\r
+    );\r
 \r
     ZeroMem (&Regs, sizeof (EFI_IA32_REGISTER_SET));\r
     Regs.X.AX = Legacy16Boot;\r
@@ -1344,12 +1346,12 @@ GenericLegacyBoot (
       0\r
       );\r
 \r
-    DisableNullDetection ();\r
-    BaseVectorMaster = (UINT32 *) (sizeof (UINT32) * PROTECTED_MODE_BASE_VECTOR_MASTER);\r
-    for (Index = 0; Index < 8; Index++) {\r
-      BaseVectorMaster[Index] = Private->ThunkSavedInt[Index];\r
-    }\r
-    EnableNullDetection ();\r
+    ACCESS_PAGE0_CODE (\r
+      BaseVectorMaster = (UINT32 *) (sizeof (UINT32) * PROTECTED_MODE_BASE_VECTOR_MASTER);\r
+      for (Index = 0; Index < 8; Index++) {\r
+        BaseVectorMaster[Index] = Private->ThunkSavedInt[Index];\r
+      }\r
+    );\r
   }\r
   Private->LegacyBootEntered = TRUE;\r
   if ((mBootMode == BOOT_LEGACY_OS) || (mBootMode == BOOT_UNCONVENTIONAL_DEVICE)) {\r
@@ -1737,11 +1739,11 @@ LegacyBiosBuildE820 (
   //\r
   // First entry is 0 to (640k - EBDA)\r
   //\r
-  DisableNullDetection ();\r
-  E820Table[0].BaseAddr  = 0;\r
-  E820Table[0].Length    = (UINT64) ((*(UINT16 *) (UINTN)0x40E) << 4);\r
-  E820Table[0].Type      = EfiAcpiAddressRangeMemory;\r
-  EnableNullDetection ();\r
+  ACCESS_PAGE0_CODE (\r
+    E820Table[0].BaseAddr  = 0;\r
+    E820Table[0].Length    = (UINT64) ((*(UINT16 *) (UINTN)0x40E) << 4);\r
+    E820Table[0].Type      = EfiAcpiAddressRangeMemory;\r
+  );\r
 \r
   //\r
   // Second entry is (640k - EBDA) to 640k\r
@@ -1975,8 +1977,6 @@ LegacyBiosCompleteBdaBeforeBoot (
   UINT16                      MachineConfig;\r
   DEVICE_PRODUCER_DATA_HEADER *SioPtr;\r
 \r
-  DisableNullDetection ();\r
-\r
   Bda           = (BDA_STRUC *) ((UINTN) 0x400);\r
   MachineConfig = 0;\r
 \r
@@ -2035,8 +2035,6 @@ LegacyBiosCompleteBdaBeforeBoot (
   MachineConfig       = (UINT16) (MachineConfig + 0x00 + 0x02 + (SioPtr->MousePresent * 0x04));\r
   Bda->MachineConfig  = MachineConfig;\r
 \r
-  EnableNullDetection ();\r
-\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -2063,17 +2061,15 @@ LegacyBiosUpdateKeyboardLedStatus (
 \r
   Private             = LEGACY_BIOS_INSTANCE_FROM_THIS (This);\r
 \r
-  DisableNullDetection ();\r
-\r
-  Bda                 = (BDA_STRUC *) ((UINTN) 0x400);\r
-  LocalLeds           = Leds;\r
-  Bda->LedStatus      = (UINT8) ((Bda->LedStatus &~0x07) | LocalLeds);\r
-  LocalLeds           = (UINT8) (LocalLeds << 4);\r
-  Bda->ShiftStatus    = (UINT8) ((Bda->ShiftStatus &~0x70) | LocalLeds);\r
-  LocalLeds           = (UINT8) (Leds & 0x20);\r
-  Bda->KeyboardStatus = (UINT8) ((Bda->KeyboardStatus &~0x20) | LocalLeds);\r
-\r
-  EnableNullDetection ();\r
+  ACCESS_PAGE0_CODE (\r
+    Bda                 = (BDA_STRUC *) ((UINTN) 0x400);\r
+    LocalLeds           = Leds;\r
+    Bda->LedStatus      = (UINT8) ((Bda->LedStatus &~0x07) | LocalLeds);\r
+    LocalLeds           = (UINT8) (LocalLeds << 4);\r
+    Bda->ShiftStatus    = (UINT8) ((Bda->ShiftStatus &~0x70) | LocalLeds);\r
+    LocalLeds           = (UINT8) (Leds & 0x20);\r
+    Bda->KeyboardStatus = (UINT8) ((Bda->KeyboardStatus &~0x20) | LocalLeds);\r
+  );\r
 \r
   //\r
   // Call into Legacy16 code to allow it to do any processing\r
@@ -2119,9 +2115,9 @@ LegacyBiosCompleteStandardCmosBeforeBoot (
   //            to large capacity drives\r
   // CMOS 14 = BDA 40:10 plus bit 3(display enabled)\r
   //\r
-  DisableNullDetection ();\r
-  Bda = (UINT8)(*((UINT8 *)((UINTN)0x410)) | BIT3);\r
-  EnableNullDetection ();\r
+  ACCESS_PAGE0_CODE (\r
+    Bda = (UINT8)(*((UINT8 *)((UINTN)0x410)) | BIT3);\r
+  );\r
 \r
   //\r
   // Force display enabled\r