summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--EdkModulePkg/EdkModulePkg.fpd3
-rw-r--r--EdkModulePkg/Include/Library/EdkDxeSalLib.h7
-rw-r--r--EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa1
-rw-r--r--EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.c2
-rw-r--r--EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.h30
-rw-r--r--EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.msa8
-rw-r--r--EdkNt32Pkg/Nt32.fpd1
-rw-r--r--MdePkg/Include/Library/BaseLib.h32
-rw-r--r--MdePkg/Library/BaseCacheMaintenanceLib/IpfCache.c14
-rw-r--r--MdePkg/Library/BaseLib/BaseLib.msa2
10 files changed, 36 insertions, 64 deletions
diff --git a/EdkModulePkg/EdkModulePkg.fpd b/EdkModulePkg/EdkModulePkg.fpd
index d171610da4..4ccad88df2 100644
--- a/EdkModulePkg/EdkModulePkg.fpd
+++ b/EdkModulePkg/EdkModulePkg.fpd
@@ -1038,6 +1038,7 @@
</ModuleSA>
<ModuleSA SupArchList="IA32" PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d" ModuleGuid="B601F8C4-43B7-4784-95B1-F4226CB40CEE">
<Libraries>
+ <Instance ModuleGuid="123dd843-57c9-4158-8418-ce68b3944ce7" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="19cbbb97-ff61-45ff-8c3f-dfa66dd118c8" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="ff5c7a2c-ab7a-4366-8616-11c6e53247b6" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="27d67720-ea68-48ae-93da-a3a074c90e30" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
@@ -6201,6 +6202,7 @@
</ModuleSA>
<ModuleSA SupArchList="X64" PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d" ModuleGuid="B601F8C4-43B7-4784-95B1-F4226CB40CEE">
<Libraries>
+ <Instance ModuleGuid="123dd843-57c9-4158-8418-ce68b3944ce7" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="19cbbb97-ff61-45ff-8c3f-dfa66dd118c8" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="ff5c7a2c-ab7a-4366-8616-11c6e53247b6" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="27d67720-ea68-48ae-93da-a3a074c90e30" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
@@ -10223,6 +10225,7 @@
</ModuleSA>
<ModuleSA SupArchList="IPF" PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d" ModuleGuid="B601F8C4-43B7-4784-95B1-F4226CB40CEE">
<Libraries>
+ <Instance ModuleGuid="123dd843-57c9-4158-8418-ce68b3944ce7" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="19cbbb97-ff61-45ff-8c3f-dfa66dd118c8" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="ff5c7a2c-ab7a-4366-8616-11c6e53247b6" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="27d67720-ea68-48ae-93da-a3a074c90e30" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
diff --git a/EdkModulePkg/Include/Library/EdkDxeSalLib.h b/EdkModulePkg/Include/Library/EdkDxeSalLib.h
index d5fe5ed141..1a37e97cda 100644
--- a/EdkModulePkg/Include/Library/EdkDxeSalLib.h
+++ b/EdkModulePkg/Include/Library/EdkDxeSalLib.h
@@ -137,12 +137,5 @@ GetEsalEntryPoint (
)
;
-VOID
-EFIAPI
-SalFlushCache (
- IN EFI_PHYSICAL_ADDRESS Start,
- IN UINT64 Length
- )
-;
#endif
diff --git a/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa b/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa
index dcb07b578b..a2e51f0961 100644
--- a/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa
+++ b/EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa
@@ -35,7 +35,6 @@
<SourceFiles>
<Filename SupArchList="IPF">Ipf/EsalServiceLib.c</Filename>
<Filename SupArchList="IPF">Ipf/AsmEsalServiceLib.s</Filename>
- <Filename SupArchList="IPF">Ipf/AsmIpfCpuCache.s</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
diff --git a/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.c b/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.c
index f3899bc8e1..61dbd9c1fc 100644
--- a/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.c
+++ b/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.c
@@ -468,7 +468,7 @@ RuntimeDriverSetVirtualAddressMap (
RuntimeImage->RelocationData
);
- FlushCpuCache (RuntimeImage->ImageBase, (UINT64)RuntimeImage->ImageSize);
+ InvalidateInstructionCacheRange ((VOID *)(UINTN)RuntimeImage->ImageBase, (UINTN)RuntimeImage->ImageSize);
}
}
//
diff --git a/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.h b/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.h
index 5b582c76ba..1aa0af5767 100644
--- a/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.h
+++ b/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.h
@@ -50,8 +50,7 @@ typedef struct {
VOID
RelocatePeImageForRuntime (
RUNTIME_IMAGE_RELOCATION_DATA *Image
- )
-;
+ );
EFI_STATUS
EFIAPI
@@ -59,8 +58,7 @@ RuntimeDriverCalculateCrc32 (
IN VOID *Data,
IN UINTN DataSize,
OUT UINT32 *CrcOut
- )
-;
+ );
EFI_STATUS
EFIAPI
@@ -69,8 +67,7 @@ RuntimeDriverRegisterImage (
IN EFI_PHYSICAL_ADDRESS ImageBase,
IN UINTN ImageSize,
IN VOID *RelocationData
- )
-;
+ );
EFI_STATUS
EFIAPI
@@ -81,40 +78,27 @@ RuntimeDriverRegisterEvent (
IN EFI_EVENT_NOTIFY NotifyFunction,
IN VOID *NotifyContext,
IN EFI_EVENT *Event
- )
-;
+ );
EFI_STATUS
EFIAPI
RuntimeDriverConvertPointer (
IN UINTN DebugDisposition,
IN OUT VOID **ConvertAddress
- )
-;
+ );
VOID
RuntimeDriverInitializeCrc32Table (
VOID
- )
-;
+ );
EFI_STATUS
EFIAPI
RuntimeDriverInitialize (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
- )
-;
+ );
-//
-// Cache Flush Routine.
-//
-EFI_STATUS
-FlushCpuCache (
- IN EFI_PHYSICAL_ADDRESS Start,
- IN UINT64 Length
- )
-;
#endif
diff --git a/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.msa b/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.msa
index b72531eafb..516dfa4855 100644
--- a/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.msa
+++ b/EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.msa
@@ -49,17 +49,15 @@
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>UefiBootServicesTableLib</Keyword>
</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">
+ <Keyword>CacheMaintenanceLib</Keyword>
+ </LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>Runtime.dxs</Filename>
<Filename>Runtime.c</Filename>
<Filename>Runtime.h</Filename>
<Filename>Crc32.c</Filename>
- <Filename SupArchList="IA32">Ia32/PeHotRelocateEx.c</Filename>
- <Filename SupArchList="X64">x64/PeHotRelocateEx.c</Filename>
- <Filename SupArchList="X64">x64/PeHotRelocateEx.h</Filename>
- <Filename SupArchList="IPF">Ipf/PeHotRelocateEx.c</Filename>
- <Filename SupArchList="IPF">Ipf/PeHotRelocateEx.h</Filename>
</SourceFiles>
<PackageDependencies>
<Package PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
diff --git a/EdkNt32Pkg/Nt32.fpd b/EdkNt32Pkg/Nt32.fpd
index 6347998e49..cb0e2fbac1 100644
--- a/EdkNt32Pkg/Nt32.fpd
+++ b/EdkNt32Pkg/Nt32.fpd
@@ -2199,6 +2199,7 @@
</ModuleSA>
<ModuleSA SupArchList="IA32" PackageGuid="68169ab0-d41b-4009-9060-292c253ac43d" ModuleGuid="B601F8C4-43B7-4784-95B1-F4226CB40CEE">
<Libraries>
+ <Instance ModuleGuid="123dd843-57c9-4158-8418-ce68b3944ce7" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="19cbbb97-ff61-45ff-8c3f-dfa66dd118c8" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="ff5c7a2c-ab7a-4366-8616-11c6e53247b6" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
<Instance ModuleGuid="27d67720-ea68-48ae-93da-a3a074c90e30" PackageGuid="5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"/>
diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/BaseLib.h
index e414e27399..329385d9c1 100644
--- a/MdePkg/Include/Library/BaseLib.h
+++ b/MdePkg/Include/Library/BaseLib.h
@@ -5072,24 +5072,24 @@ IpfReadItc (
/**
- Invalidates a range of instruction cache lines in the cache coherency domain
- of the calling CPU.
-
- Invalidates the instruction cache lines specified by Address and Length. If
- Address is not aligned on a cache line boundary, then entire instruction
- cache line containing Address is invalidated. If Address + Length is not
- aligned on a cache line boundary, then the entire instruction cache line
- containing Address + Length -1 is invalidated. This function may choose to
- invalidate the entire instruction cache if that is more efficient than
- invalidating the specified range. If Length is 0, the no instruction cache
- lines are invalidated. Address is returned.
+ Flush a range of cache lines in the cache coherency domain of the calling
+ CPU.
+
+ Invalidates the cache lines specified by Address and Length. If Address is
+ not aligned on a cache line boundary, then entire cache line containing
+ Address is invalidated. If Address + Length is not aligned on a cache line
+ boundary, then the entire instruction cache line containing Address + Length
+ -1 is invalidated. This function may choose to invalidate the entire
+ instruction cache if that is more efficient than invalidating the specified
+ range. If Length is 0, the no instruction cache lines are invalidated.
+ Address is returned.
If Length is greater than (MAX_ADDRESS - Address + 1), then ASSERT().
- @param Address The base address of the instruction cache lines to
- invalidate. If the CPU is in a physical addressing mode, then
- Address is a physical address. If the CPU is in a virtual
- addressing mode, then Address is a virtual address.
+ @param Address The base address of the instruction lines to invalidate. If
+ the CPU is in a physical addressing mode, then Address is a
+ physical address. If the CPU is in a virtual addressing mode,
+ then Address is a virtual address.
@param Length The number of bytes to invalidate from the instruction cache.
@@ -5098,7 +5098,7 @@ IpfReadItc (
**/
VOID *
EFIAPI
-IpfInvalidateInstructionCacheRange (
+IpfFlushCacheRange (
IN VOID *Address,
IN UINTN Length
);
diff --git a/MdePkg/Library/BaseCacheMaintenanceLib/IpfCache.c b/MdePkg/Library/BaseCacheMaintenanceLib/IpfCache.c
index 0c6f0e4dc8..17060eb70f 100644
--- a/MdePkg/Library/BaseCacheMaintenanceLib/IpfCache.c
+++ b/MdePkg/Library/BaseCacheMaintenanceLib/IpfCache.c
@@ -62,7 +62,7 @@ InvalidateInstructionCacheRange (
IN UINTN Length
)
{
- return IpfInvalidateInstructionCacheRange (Address, Length);
+ return IpfFlushCacheRange (Address, Length);
}
/**
@@ -119,10 +119,7 @@ WriteBackInvalidateDataCacheRange (
{
ASSERT (Length <= MAX_ADDRESS - (UINTN)Address + 1);
- if (Length > 0) {
- WriteBackInvalidateDataCache ();
- }
- return Address;
+ return IpfFlushCacheRange (Address, Length);
}
/**
@@ -178,10 +175,7 @@ WriteBackDataCacheRange (
{
ASSERT (Length <= MAX_ADDRESS - (UINTN)Address + 1);
- if (Length > 0) {
- WriteBackDataCache ();
- }
- return Address;
+ return IpfFlushCacheRange (Address, Length);
}
/**
@@ -238,5 +232,5 @@ InvalidateDataCacheRange (
IN UINTN Length
)
{
- return WriteBackInvalidateDataCacheRange (Address, Length);
+ return IpfFlushCacheRange (Address, Length);
}
diff --git a/MdePkg/Library/BaseLib/BaseLib.msa b/MdePkg/Library/BaseLib/BaseLib.msa
index 52dbf7304a..08f21eb7b2 100644
--- a/MdePkg/Library/BaseLib/BaseLib.msa
+++ b/MdePkg/Library/BaseLib/BaseLib.msa
@@ -425,7 +425,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
<Filename SupArchList="IPF">Ipf/CpuFlushTlb.s</Filename>
<Filename SupArchList="IPF">Ipf/GetInterruptState.s</Filename>
<Filename SupArchList="IPF">Ipf/Non-existing.c</Filename>
- <Filename SupArchList="IPF">Ipf/InvalidateInstructionCacheRange.s</Filename>
+ <Filename SupArchList="IPF">Ipf/FlushCacheRange.s</Filename>
<Filename SupArchList="IPF">Ipf/ReadItc.s</Filename>
<Filename SupArchList="EBC">Math64.c</Filename>