Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
Copyright (c) 2011, Andrei Warkentin <andreiw@motorola.com>\r
\r
- 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
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
AddIoMemoryRangeHob (0x0A0000, BASE_1MB);\r
\r
if (!mXen) {\r
- UINT32 TopOfLowRam;\r
UINT64 PciExBarBase;\r
UINT32 PciBase;\r
UINT32 PciSize;\r
\r
- TopOfLowRam = GetSystemMemorySizeBelow4gb ();\r
PciExBarBase = 0;\r
+ PciBase = (mQemuUc32Base < BASE_2GB) ? BASE_2GB : mQemuUc32Base;\r
if (mHostBridgeDevId == INTEL_Q35_MCH_DEVICE_ID) {\r
//\r
- // The MMCONFIG area is expected to fall between the top of low RAM and\r
- // the base of the 32-bit PCI host aperture.\r
+ // The 32-bit PCI host aperture is expected to fall between the top of\r
+ // low RAM and the base of the MMCONFIG area.\r
//\r
PciExBarBase = FixedPcdGet64 (PcdPciExpressBaseAddress);\r
- ASSERT (TopOfLowRam <= PciExBarBase);\r
+ ASSERT (PciBase < PciExBarBase);\r
ASSERT (PciExBarBase <= MAX_UINT32 - SIZE_256MB);\r
- PciBase = (UINT32)(PciExBarBase + SIZE_256MB);\r
+ PciSize = (UINT32)(PciExBarBase - PciBase);\r
} else {\r
- PciBase = (TopOfLowRam < BASE_2GB) ? BASE_2GB : TopOfLowRam;\r
+ PciSize = 0xFC000000 - PciBase;\r
}\r
\r
//\r
// 0xFED20000 gap 896 KB\r
// 0xFEE00000 LAPIC 1 MB\r
//\r
- PciSize = 0xFC000000 - PciBase;\r
AddIoMemoryBaseSizeHob (PciBase, PciSize);\r
PcdStatus = PcdSet64S (PcdPciMmio32Base, PciBase);\r
ASSERT_RETURN_ERROR (PcdStatus);\r
NoexecDxeInitialization ();\r
}\r
\r
+ InstallClearCacheCallback ();\r
AmdSevInitialize ();\r
MiscInitialization ();\r
InstallFeatureControlCallback ();\r