mirror of
				https://gitlab.com/qemu-project/edk2.git
				synced 2025-10-30 07:56:39 +08:00 
			
		
		
		
	UefiCpuPkg: Add common architecture level library support
Introduce fundamental architecture-level functionalities which should be implemented cross different architectures. Signed-off-by: Ajan Zhong <ajan.zhong@newfw.com>
This commit is contained in:
		
							
								
								
									
										30
									
								
								UefiCpuPkg/Include/Library/BaseArchLibSupport.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								UefiCpuPkg/Include/Library/BaseArchLibSupport.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| /** @file | ||||
|  | ||||
|   Base Architecture Libraries Support. | ||||
|  | ||||
|   Copyright 2024 Google LLC | ||||
|  | ||||
|   SPDX-License-Identifier: BSD-2-Clause-Patent | ||||
| **/ | ||||
|  | ||||
| #ifndef BASE_ARCH_LIB_SUPPORT_H | ||||
| #define BASE_ARCH_LIB_SUPPORT_H | ||||
|  | ||||
| #include <Base.h> | ||||
|  | ||||
| /** | ||||
|   Report the Physical Address size supported by Processor. | ||||
|  | ||||
|   For X86, returns the actual Physical Address size reported by CPUID. | ||||
|   For AArch64, returns the actual Physical Address range reported by | ||||
|     ID_ARCH64MMFR0_EL1. | ||||
|  | ||||
|   @return                         Physical Address Bits | ||||
|  | ||||
| **/ | ||||
| UINT8 | ||||
| ArchGetPhysicalAddressBits ( | ||||
|   VOID | ||||
|   ); | ||||
|  | ||||
| #endif | ||||
| @ -0,0 +1,27 @@ | ||||
| /** @file | ||||
|   UefiCpu AArch64 architecture support library. | ||||
|  | ||||
|   Copyright 2024 Google LLC | ||||
|  | ||||
|   SPDX-License-Identifier: BSD-2-Clause-Patent | ||||
| **/ | ||||
|  | ||||
| #include <Base.h> | ||||
| #include <Library/ArmLib.h> | ||||
|  | ||||
| VOID | ||||
| EFIAPI | ||||
| InitializeFloatingPointUnits ( | ||||
|   VOID | ||||
|   ) | ||||
| { | ||||
|   return; | ||||
| } | ||||
|  | ||||
| UINTN | ||||
| ArchGetPhysicalAddressBits ( | ||||
|   VOID | ||||
|   ) | ||||
| { | ||||
|   return ArmGetPhysicalAddressBits (); | ||||
| } | ||||
							
								
								
									
										29
									
								
								UefiCpuPkg/Library/BaseArchSupportLib/BaseArchSupportLib.inf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								UefiCpuPkg/Library/BaseArchSupportLib/BaseArchSupportLib.inf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| ## @file | ||||
| #  UefiCpu AArch64 architecture support library. | ||||
| # | ||||
| #  Copyright 2024 Google LLC | ||||
| # | ||||
| #  SPDX-License-Identifier: BSD-2-Clause-Patent | ||||
| # | ||||
| ## | ||||
|  | ||||
| [Defines] | ||||
|   INF_VERSION         = 0x0001001b | ||||
|   BASE_NAME           = UefiCpuBaseArchSupportLib | ||||
|   FILE_GUID           = 692f5af5-e629-4ead-ade1-db353d59bcb9 | ||||
|   MODULE_TYPE         = BASE | ||||
|   VERSION_STRING      = 1.0 | ||||
|   LIBRARY_CLASS       = UefiCpuBaseArchSupportLib | ||||
|  | ||||
| [Sources.AARCH64] | ||||
|   AArch64/AArch64LibSupport.c | ||||
|  | ||||
| [Sources.IA32, Sources.X64] | ||||
|   X86/X86LibSupport.c | ||||
|  | ||||
| [Packages] | ||||
|   MdePkg/MdePkg.dec | ||||
|   UefiCpuPkg/UefiCpuPkg.dec | ||||
|  | ||||
| [LibraryClasses] | ||||
|   BaseLib | ||||
							
								
								
									
										26
									
								
								UefiCpuPkg/Library/BaseArchSupportLib/X86/X86LibSupport.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								UefiCpuPkg/Library/BaseArchSupportLib/X86/X86LibSupport.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | ||||
| /** @file | ||||
|   UefiCpu X86 architectures support library for both Ia32 and X64. | ||||
|  | ||||
|   Copyright 2024 Google LLC | ||||
|  | ||||
|   SPDX-License-Identifier: BSD-2-Clause-Patent | ||||
| **/ | ||||
|  | ||||
| #include <Base.h> | ||||
| #include <Library/BaseLib.h> | ||||
|  | ||||
| UINT8 | ||||
| ArchGetPhysicalAddressBits ( | ||||
|   VOID | ||||
|   ) | ||||
| { | ||||
|   UINT32  RegEax; | ||||
|  | ||||
|   AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL); | ||||
|   if (RegEax >= 0x80000008) { | ||||
|     AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL); | ||||
|     return (UINT8)RegEax; | ||||
|   } | ||||
|  | ||||
|   return 36; | ||||
| } | ||||
| @ -25,6 +25,11 @@ | ||||
|   ## | ||||
|   RegisterCpuFeaturesLib|Include/Library/RegisterCpuFeaturesLib.h | ||||
|  | ||||
|   ##  @libraryclass  Defines some common architecture-level fundamental routines which | ||||
|   ##                 are supported at different architectures. | ||||
|   ## | ||||
|   UefiCpuBaseArchSupportLib|Include/Library/BaseArchLibSupport.h | ||||
|  | ||||
| [LibraryClasses.IA32, LibraryClasses.X64] | ||||
|   ##  @libraryclass  Provides functions to manage MTRR settings on IA32 and X64 CPUs. | ||||
|   ## | ||||
|  | ||||
| @ -151,6 +151,7 @@ | ||||
|   UefiCpuPkg/CpuIo2Smm/CpuIo2StandaloneMm.inf | ||||
|   UefiCpuPkg/CpuMpPei/CpuMpPei.inf | ||||
|   UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe.inf | ||||
|   UefiCpuPkg/Library/BaseArchSupportLib/BaseArchSupportLib.inf | ||||
|   UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.inf | ||||
|   UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.inf | ||||
|   UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.inf | ||||
| @ -227,6 +228,9 @@ | ||||
|   UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf | ||||
|   UefiCpuPkg/CpuMmio2Dxe/CpuMmio2Dxe.inf | ||||
|  | ||||
| [Components.AARCH64] | ||||
|   UefiCpuPkg/Library/BaseArchSupportLib/BaseArchSupportLib.inf | ||||
|  | ||||
| [Components.LOONGARCH64] | ||||
|   UefiCpuPkg/Library/CpuMmuLib/CpuMmuLib.inf | ||||
|   UefiCpuPkg/CpuMmio2Dxe/CpuMmio2Dxe.inf | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Ajan Zhong
					Ajan Zhong