diff options
-rw-r--r-- | EdkModulePkg/EdkModulePkg.fpd | 3 | ||||
-rw-r--r-- | EdkModulePkg/Include/Library/EdkDxeSalLib.h | 7 | ||||
-rw-r--r-- | EdkModulePkg/Library/EdkDxeSalLib/EdkDxeSalLib.msa | 1 | ||||
-rw-r--r-- | EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.c | 2 | ||||
-rw-r--r-- | EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.h | 30 | ||||
-rw-r--r-- | EdkModulePkg/Universal/Runtime/RuntimeDxe/Runtime.msa | 8 | ||||
-rw-r--r-- | EdkNt32Pkg/Nt32.fpd | 1 | ||||
-rw-r--r-- | MdePkg/Include/Library/BaseLib.h | 32 | ||||
-rw-r--r-- | MdePkg/Library/BaseCacheMaintenanceLib/IpfCache.c | 14 | ||||
-rw-r--r-- | MdePkg/Library/BaseLib/BaseLib.msa | 2 |
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>
|