summaryrefslogtreecommitdiffstats
path: root/MdePkg
Commit message (Collapse)AuthorAgeFilesLines
* MdePkg/DxeRngLib: make mSecureHashAlgorithms staticGerd Hoffmann7 days1-1/+1
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* MdePkg: Define AARCH64_CPTR_RES1 and AARCH64_CPTR_DEFAULTJessica Clarke7 days1-1/+3
| | | | | | | | | | These constants give the set of RES1 bits in CPTR_EL2, as 1s, and the default value to use for CPTR_EL2 in order to enable all known (or harmless) features but no unknown ones that require EL2 knowledge. This will be used by ArmPlatformPkg in the following commit, separated due to being different packages, even though the combined change is tiny. Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
* ArmPlatformPkg,MdePkg: Rename AARCH64 CPACR_CP_FULL_ACCESSJessica Clarke7 days1-4/+4
| | | | | | | | | | | | | | CP_FULL_ACCESS is a misnomer, we only enable access to SIMD/FP state, and although the register's mnemonic is CPACR_EL1, its full name is "Architectural Feature Access Control Register", with AArch64 having no coprocessors like AArch32 did, so the "CP" is also not appropriate. Rename it to show it's the default value we use on entry, and define it in terms of the existing CPACR_FPEN_FULL rather than a magic constant with the same value to more clearly document that fact. Also update comments to reflect all this (including the CPTR_EL2 case). Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
* MdePkg: MdeLibs.dsc.inc: Apply StackCheckLibNull to All Module TypesOliver Smith-Denny8 days1-13/+8
| | | | | | | | | | | | | | | Now that the ResetVectors are USER_DEFINED modules, they will not be linked against StackCheckLibNull, which were the only modules causing issues. So, we can now remove the kludge we had before and the requirement for every DSC to include StackCheckLibNull for SEC modules and just apply StackCheckLibNull globally. This also changes every DSC to drop the SEC definition of StackCheckLibNull. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg: Added definition of AMD specific public MSRsKun Qin9 days2-0/+56
| | | | | | | | | Added definition of AMD specific public MSRs: 1. SMBASE 2. SMM_ADDR 3. SMM_MASK Signed-off-by: Kun Qin <kuqin@microsoft.com>
* MdePkg/Test/DevicePathLib: Remove FreePool(NULL)Michael D Kinney13 days1-2/+0
| | | | | | | | Unit test checks if AppendDevicePathInstance() returns NULL. In those cases, AppendDevicePathInstance() does not allocate a device path, so the call to FreePool() must not be performed. Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
* MdePkg: CodeQL Fixes.Michael Kubacki2024-11-0111-196/+460
| | | | | | | | | | | | | Includes changes across the repo for the following CodeQL rules: - cpp/comparison-with-wider-type - cpp/overflow-buffer - cpp/redundant-null-check-param - cpp/uselesstest Co-authored-by: Taylor Beebe <tabeebe@microsoft.com> Co-authored-by: kenlautner <85201046+kenlautner@users.noreply.github.com> Signed-off-by: Aaron Pop <aaronpop@microsoft.com>
* MdePkg: Add Google Mock Library for PostCodeLibTsunFeng2024-10-304-0/+104
| | | | Signed-off-by: TsunFeng <v-tshuang@microsoft.com>
* MdePkg/MockUefiLib: Added new mock functions.v-sbolisetti2024-10-282-4/+382
| | | | Signed-off-by: v-sbolisetti <v-sbolisetti@microsoft.com>
* MdePkg/Include/Guid: Fix EFI_CXL_COMPONENT_EVENT_LOG in Cper.hSienski Piotr2024-10-221-4/+4
| | | | | | | | | | | [Issue Description] CXL_ERROR_PCIE_DEV_ID in Cper.h was renamed to EFI_CXL_ERROR_PCIE_DEV_ID, but EFI_CXL_COMPONENT_EVENT_LOG still uses previous name. [Resolution] Modify EFI_CXL_COMPONENT_EVENT_LOG to use EFI_CXL_ERROR_PCIE_DEV_ID Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>
* MdePkg: Updated Type 4 Info as per Smbios 3.8.0Revathy V2024-10-221-0/+1
| | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4861 Added PROCESSOR_FAMILY_NAME support in MdePkg. Signed-off-by: Revathy <revathyv@ami.com>
* MdePkg/Include/Guid: Rename CXL definitions in Cper.hSienski Piotr2024-10-211-26/+26
| | | | | | | | | | | [Issue Description] In MdePkg/Include/Guid/Cper.h there are multiple definitions regarding CXL that can do use EFI_ prefix in their names [Resolution] Rename these definitions in MdePkg/Include/Guid/Cper.h Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>
* MdePkg: Fix null macros for XCODE5 and CLANGMike Beaton2024-10-181-4/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building OvmfPkg in RELEASE mode in the XCODE5 toolchain, the ASSERT_EFI_ERROR change prevents this error: .../MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c:141:15: error: variable 'Status' set but not used [-Werror,-Wunused-but-set-variable] EFI_STATUS Status; ^ which is currently stopping the build. When building in RELEASE mode in the CLANGPDB toolchain,the DEBUG macro change prevents this error: .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error: variable &apos;EventNames&apos; is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration] STATIC CONST CHAR8 *EventNames[] = { ^ which is currently stopping the build. CLANGDWARF produces the same error as CLANGPDB above, if -Wno-unneeded-internal-declaration is removed from its build flags. With the null DEBUG macro change, this warning suppression can be removed from CLANGDWARF, which is considered a benefit as it has the potential to catch real coding errors. This is done in a subsequent commit. This commit has the desirable side effect that we no longer require (and cannot use) explicit `#ifndef MDEPKG_NDEBUG` around items only used in DEBUG macros. This requires the ArmPkg change made here to be in the same commit as the MdePkg changes. Note: In common with existing macros in EDK II, including the pre-existing and unchanged DEBUG/NOOPT versions of the macros which are modified here, we use the standard approach of adding `do { ... } while (FALSE)` wrapping to ensure that the macros behave correctly with surrounding code (e.g. require a following ';' and do not combine in unexpected ways with nearby conditionals). Continuous-integration-options: PatchCheck.ignore-multi-package Co-authored-by: Mikhail Krichanov <krichanov@ispras.ru> Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>
* MdePkg: Add Google Test Library and Protocolv-chhsieh2024-10-1714-0/+996
| | | | | | | | | | | | | | | Mock Libraries: MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib Mock Protocol: MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com> Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com> Cc: Reviewer Shruti Gupta <shrugupt@microsoft.com>
* MdePkg/Include/Guid: Add missing CXL definitions to Cper.hSienski Piotr2024-10-171-0/+98
| | | | | | | | | | | | [Issue Description] In MdePkg/Include/Guid/Cper.h there are missing multiple definitions regarding CXL that can be found in UEFI 2.10 spec chapters N.2.13 and N.2.14 [Resolution] Add these definitions to MdePkg/Include/Guid/Cper.h Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>
* MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A SpecKun Qin2024-10-171-20/+20
| | | | | | | | | | | | | | | | | | REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496 PI spec defined the `Register` function input argument `Delay` as output. However, this parameter should be used to define the minmal time delay the callback should fire. Thus it should be an input parameter. This change fixed the argument type. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Co-authored-by: Mike Turner <mikeyt@pobox.com> Co-authored-by: Sachin Ganesh <sachinganesh@ami.com> Signed-off-by: Kun Qin <kuqin12@gmail.com>
* Add USB Association Descriptor definitionsOleg Ilyasov2024-10-161-7/+27
| | | | | | | - USB 3.0 spec, Section 9.6.4 - Add class specific descriptor types Signed-off-by: Oleg Ilyasov <olegi@ami.com>
* MdePkg: Describe storage location of config tables as per PI 1.7 A specINDIA\sachinganesh2024-10-163-0/+11
| | | | | | | | | | | | Added comments to describe the storage location of DXE Services Table, HOB List Table and PEI Vector Handoff Table. As defined in PI 1.7 A Errata specification. Cc: Felix Polyudov <felixp@ami.com> Cc: Dhanaraj V <vdhanaraj@ami.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
* MdePkg: Clarify EFI_MM_SX_DISPATCH_PROTOCOL.Register() as per PI 1.7 A specINDIA\sachinganesh2024-10-161-5/+1
| | | | | | | | | | | | Clarified comments regarding the usage of RegisterContext parameter of Register() API in EFI_MM_SX_DISPATCH_PROTOCOL. As defined in the PI 1.7 A Errata specification. Cc: Felix Polyudov <felixp@ami.com> Cc: Dhanaraj V <vdhanaraj@ami.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
* MdePkg: Define PI Specification Version MacroINDIA\sachinganesh2024-10-164-13/+17
| | | | | | | | | | Defined PI specification version. Used them to define revisions of PEI/DXE/MM system tables. Cc: Felix Polyudov <felixp@ami.com> Cc: Dhanaraj V <vdhanaraj@ami.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Signed-off-by: Sachin Ganesh <sachinganesh@ami.com>
* MdePkg: DebugLib: Check Signature in CR in Release BuildsOliver Smith-Denny2024-10-081-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The CR macro is used to access an enclosing structure from a pointer within the structure. In DEBUG builds (i.e. when MDEPKG_NDEBUG is not set and debug asserts are enabled), this macro does signature validation checking to ensure that the structure that has been found is the correct structure, based on a signature passed in by the caller. However, if MDEPKG_NDEBUG is set or debug asserts are disabled, no signature validation is performed, meaning that CR may return an invalid structure that the caller believes is valid and has had signature validation on, causing undefined behavior (memory corruption). We should where at all possible have defined behavior, particularly in RELEASE builds, which are what typical platforms will ship to consumers. This patch updates CR to do the signature validation in all scenarios to provide defined behavior from the macro. In the event of a signature failure, CR will either 1) assert if !MDEPKG_NDEBUG and debug asserts are enabled (existing behavior) or 2) return NULL to indicate to the caller that signature validation failed. There exist consumers today who already, erroneously, rely on this behavior. Another macro, BASE_CR, exists for callers who do not wish to perform signature validation. Any code that wishes to avoid the signature validation should move to this macro. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg/BaseLib: RISC-V: Add FPU CSR constantsHeinrich Schuchardt2024-10-041-0/+4
| | | | | | | * Define CSR fcsr * Define bitmasks for vs and fs bit fields in the mstatus register Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
* MdePkg: MdeLibs.dsc.inc: Introduce CUSTOM_STACK_CHECK_LIB MacroOliver Smith-Denny2024-10-042-8/+83
| | | | | | | | | | | | | In order to support a platform overriding StackCheckLibNull provided by MdeLibs.dsc.inc, the CUSTOM_STACK_CHECK_LIB macro is introduced. If this macro is defined, MdeLibs.dsc.inc will not link StackCheckLibNull and it is expected that the platform will link the version(s) of StackCheckLib that it requires. The StackCheckLib README is also updated in this patch to document the new macro and provide additional information. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg/IndustryStandard: Adds SPMI macrosAbdul Lateef Attar2024-10-031-0/+15
| | | | | | | | | | | | Adds macro which defines SPMI table revision and interface type as per the specification. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Sami Mujawar <Sami.Mujawar@arm.com> Cc: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
* MdePkg: Improving readability of CVE patch for PeCoffLoaderRelocateImageDoug Flick2024-10-021-1/+1
| | | | | | | | | | This change adds parantheses to the if condition detecting overflow in the PeCoffLoaderRelocateImage function to improve readability. Follow on change for: REF!: https://github.com/tianocore/edk2/pull/6249 Signed-off-by: Doug Flick <dougflick@microsoft.com>
* MdePkg: add various additional functions to BaseFdtLibLeif Lindholm2024-10-022-0/+272
| | | | | | | | | | | | - FdtOffsetPointer - FdtParentOffset - FdtNodeOffsetByPhandle - FdtStringListContains - FdtGetAliasNameLen - FdtPathOffsetNameLen - FdtPathOffset Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: export additional Property functions from BaseFdtLibLeif Lindholm2024-10-022-0/+137
| | | | | | | | - FdtSetPropU64 - FdtAppendProp - FdtDelProp Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: export FdtAddressCells/FdtSizeCells from BaseFdtLibLeif Lindholm2024-10-022-0/+66
| | | | Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: export FdtOpenInto/FdtPack from BaseFdtLibLeif Lindholm2024-10-022-0/+68
| | | | Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: export some additional macros from BaseFdtLibLeif Lindholm2024-10-021-0/+16
| | | | | | | | - FDT_TAGSIZE and FDT_MAX_NCELLS - FdtGetHeader/FdtTotalSize - FdtForEachSubnode Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: align BaseFdtLib function prototypesLeif Lindholm2024-10-021-4/+5
| | | | | | | | | | | FdtLib.h uses CONST FDT_PROPERTY * return values for some wrapper functions, but the implementation in FdtLib.c used to original CONST struct fdt_property * instead of the exported typedef. Import LibFdt.h in the implementation file and make the implementation consistent with the declaration. Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: add FdtStrerror wrapper to BaseFdtLibLeif Lindholm2024-10-022-0/+128
| | | | | | | Add a wrapper for fdt_strerror () and add the currently supported error code defines from submodule. Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: consistently use "Property" in BaseFdtLibLeif Lindholm2024-10-024-8/+8
| | | | | | | | | | | There is currently a mix on functions named as Prop or Property. The latter is in majority, and the better fit for tianocore coding style, so rename FdtNodeOffsetByPropValue () and FdtSetProp () for consistency. To avoid breaking bisect, change existing users in UefiPayloadPkg. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg,UefiPayloadPkg: improve BaseFdtLib memreserve helper styleLeif Lindholm2024-10-022-19/+19
| | | | | | | | | | | | | | | | | | FdtNumRsv and FdtGetMemRsv were added for the benefit of UefiPayloadPkg, but their naming matches neither upstream libfdt nor tianocore coding style rules. And there was scope for improvement of the doxygen descriptions as well. These functions currently have only one in-tree user, UefiPayloadPkg FdtParserLib. So rename them more conformant FdtGetNumberOfReserveMapEntries and FdtGetReserveMapEntry and update the description comment blocks, at the same time as updating the existing user. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Leif Lindholm <quic_llindhol@quicinc.com>
* MdePkg: Fix overflow issue in BasePeCoffLibDoug Flick2024-09-301-1/+1
| | | | | | | | | | The RelocDir->Size is a UINT32 value, and RelocDir->VirtualAddress is also a UINT32 value. The current code does not check for overflow when adding RelocDir->Size to RelocDir->VirtualAddress. This patch adds a check to ensure that the addition does not overflow. Signed-off-by: Doug Flick <dougflick@microsoft.com> Authored-by: sriraamx gobichettipalayam <sri..@intel.com>
* MdePkg: Fix DEBUG_CODE and PERF_CODE macros for XCODE5Mike Beaton2024-09-272-4/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | Without these changes, we get the error: error: variable '__DebugCodeLocal' set but not used from the DebugLib.h DEBUG_CODE_BEGIN()/END() macros on XCODE5. Similarly, in NOOPT builds only, we get: error: variable '__PerformanceCodeLocal' set but not used from the PerformanceLib.h PERF_CODE_BEGIN()/END() macros on XCODE5. It is important to note that the previous code involving a local variable was intended to ensure correct behaviour of ; following the macros, in particular that ; should be required: - https://github.com/tianocore/edk2/pull/6226#issuecomment-2364087866 - https://github.com/tianocore/edk2/pull/6226#issuecomment-2364619759 This converted version repeats the standard do { ... } while (FALSE) idiom (which is already used in the END macro) to achieve the same affect. The modified versions work on all toolchains. Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>
* MdePkg: Add reserved mem fdt helpersDhaval2024-09-142-0/+75
| | | | | | | Devicetree defines a short hand way of defining reserved memory ranges. Add APIs to access such nodes Signed-off-by: Dhaval Sharma <dhaval@rivosinc.com>
* MdePkg/DxeRngLib: Add gEfiRngAlgorithmArmRndr to the secure algorithmsPierre Gondois2024-09-132-0/+10
| | | | | | | | | | | | DxeRngLib iterates over a list of secure algorithms before trying to use the default algorithm provided by the Rng protocol. Add gEfiRngAlgorithmArmRndr to this list. The algorithm represented by this GUID is a secure DRBG of an unknown type, implemented by the aarch64 RNDR instruction. On AARCH64 platform, use the RNDR instruction as the first option if it is available. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
* MdePkg/DxeRngLib: Use PcdEnforceSecureRngAlgorithms for default algorithmPierre Gondois2024-09-132-5/+10
| | | | | | | | | Use PcdEnforceSecureRngAlgorithms to allow using the Rng protocol with the default algorithm. All previous call to the Rng protocol are requesting a secure Rng algorithm. Not specifying the Rng algorithm GUID to use is considered unsecure. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
* MdePkg/DxeRngLib: Refactor Rng algorithm selectionPierre Gondois2024-09-132-31/+158
| | | | | | | | | | | Add a library constructor which: - locate the RNG prototocol and keep a reference to it in order to avoid locating it multiple times (for each random number generation) - check which secure algorithm is available on the platform. This avoids to try each secure algorithm until finding one available for each random number generation call. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
* MdePkg: Move PcdEnforceSecureRngAlgorithms from NetworkPkgPierre Gondois2024-09-131-0/+6
| | | | | | | | | | The PcdEnforceSecureRngAlgorithms Pcd enforces the use of RNG algorithms defined by the UEFI spec. To re-use the Pcd in other packages and have a generic mean to control the usage of unsecure algorithms, move the Pcd to the MdePkg. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
* MdePkg DebugLib: Enable FILE NAME as DEBUG ASSERT for GCC12Chun-Yi Lee2024-09-131-2/+2
| | | | | | | | | | | | | Using __FILE_NAME__ is useful for reducing the size of debug image and it's also good for reproducable builds. The gcc-12 also supported this macro. Ref: https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=1a9b3f04c11eb467a8dc504a37dad57a371a0d4c This patch removed the checking of __clang__ when using __FILE_NAME__. References: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42579 Signed-off-by: Chun-Yi Lee <jlee@suse.com>
* MdePkg/Http11.h: Add HTTP header definitions.Leandro Becker2024-09-131-0/+28
| | | | | | | Added HTTP header definitions for the following headers: "Content-Range", "Last-Modified" and "If-Unmodified-Since" Signed-off-by: Leandro Gustavo Biss Becker <lbecker@positivo.com.br>
* MdePkg: Remove Old Stack Check Lib ImplementationOliver Smith-Denny2024-09-135-115/+0
| | | | | | | Now that the new stack check lib implementation is being used everywhere, remove the old one. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg: Create Stack Check LibTaylor Beebe2024-09-1312-0/+464
| | | | | | | | | | | | | | | | | | StackCheckLib contains the required functionality for initializing the stack cookie value, checking the value, and triggering an interrupt when a mismatch occurs. The stack cookie is a random value placed on the stack between the stack variables and the return address so that continuously writing past the stack variables will cause the stack cookie to be overwritten. Before the function returns, the stack cookie value will be checked and if there is a mismatch then StackCheckLib handles the failure. Because UEFI doesn't use the C runtime libraries provided by MSVC, the stack check code is written in assembly within this library. GCC and Clang compilers have built-in support for stack cookie checking, so this library only handles failures. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg: Create Stack Check Null LibsTaylor Beebe2024-09-1315-1/+252
| | | | | | | | | | | | | | | | | | | | | Add Null libs for Stack Check and Stack Check Failure Hook Lib that allow a platform to opt out of stack checks and the stack check failure hook lib. StackCheckLib allows implementation (or in this case null implementation) of stack checks on binaries. There is a Host Application specific version of this null lib because MSVC host applications must not be linked against our lib (so the file here is a no-op but that doesn't cause the build system to fail the build for not building a file for MSVC) as it links against the MSVC C runtime lib that provides the stack cookie definitions. GCC host applications do not link against such a C runtime lib and must be linked against our version. StackCheckFailureHookLib lets a platform do custom functionality when a stack check failure occurs (such as log it to a platform defined mechanism). The null lib simply returns. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg: Add Stack Cookie Interrupt Vector PCDOliver Smith-Denny2024-09-131-0/+3
| | | | | | | | | | | This patch adds a PCD allowing a platform to specify the interrupt vector to trigger on a stack check failure. On x86, this is an offset into the IDT. On ARM/AARCH64, this triggers a software interrupt that can be decoded to indicate this was a stack check failure. Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg/ArmLib: Drop routines that maintain the entire D-cacheArd Biesheuvel2024-09-131-18/+0
| | | | | | | | Cache maintenance on the D-cache hierarchy as a whole is not supported by the ARM architecture, so drop the routines from ArmLib that pretend to implement it. Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
* MdePkg: Move CompilerIntrinsicsLib from ArmPkgOliver Smith-Denny2024-09-1246-0/+2773
| | | | | | | | | | | | | | | | | | | | As per the emailed RFC in https://edk2.groups.io/g/devel/topic/rfc_move/107675828, this patch moves CompilerIntrinsicsLib from ArmPkg to MdePkg as this library provides compiler intrinsics, which are industry standard. This aligns with the goal of integrating ArmPkg into existing packages: https://bugzilla.tianocore.org/show_bug.cgi?id=4121. The newly placed CompilerIntrinsicsLib is added to MdeLibs.dsc.inc as every DSC that builds ARM/AARCH64 needs this library added. The old location is removed from every DSC in edk2 in this commit also to not break bisectability with minimal hoop jumping. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
* MdePkg: Move AsmMacroIoLib*.h from ArmPkgOliver Smith-Denny2024-09-122-0/+94
| | | | | | | | | | | | | | | | | | | AsmMacroIoLib.h and AsmMacroIoLibV8.h are used by the CompilerIntrinsicsLib, which is moving to MdePkg. These functions provide standard definitions for ARM/AARCH64 assembly code, respectively, and so are moved to the arch directories in MdePkg to avoid MdePkg having a dependency on ArmPkg. Now that the files are in Arm/ and AArch64/ directories, the filenames are changed to AsmMacroLib.h as we can distinguish the architecture from the path. AsmMacroIoLib.inc is unused and so is removed. Continuous-integration-options: PatchCheck.ignore-multi-package Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>