summaryrefslogtreecommitdiff
path: root/MdePkg
AgeCommit message (Collapse)Author
2016-11-28MdePkg IndustryStandard: Add DDR3, DDR4 and LPDDR definition per SPD specLiming Gao
https://bugzilla.tianocore.org/show_bug.cgi?id=201 In V3, Use Odt to replace ODT, Cke to replace CKE, Id to replace ID, and Cl to replace CL in structure field name. In V2, separate DDR3, DDR4 and LPDDR definition into the different files; use the different SPD prefix as structure definitions for each SPD type. Cc: Giri P Mudusuru <giri.p.mudusuru@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Giri P Mudusuru <giri.p.mudusuru@intel.com>
2016-11-23MdeModulePkg/EbcDxe: reorganize EBC header definitionsPete Batard
VM related defs are now in EbcVmTest.h, and opocode related definitions in Ebc.h. Because it is used by both the EBC Debugger and driver, EbcDebugSignalException() sees its definition factorized in EbcDebuggerHook.h. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Pete Batard <pete@akeo.ie> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2016-11-21MdePkg BaseLib: API PathRemoveLastItem not handle root paths properlyHao Wu
https://bugzilla.tianocore.org/show_bug.cgi?id=239 When the input path for API PathRemoveLastItem() is a root path like 'fs0:\', the API will return TRUE (indicating a directory or file was removed from the path) and modifies the path to 'fs0:'. In fact, there's no directory or file removed in the above case. This commit adds additional check to resolve this issue and modifies the API's description to make it more straightforward. Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-11-18MdePkg Base.h: Add add comments on __ prefix in enum VERIFY_UINTXX_ENUM_SIZELiming Gao
Cc: Michael Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
2016-11-17MdePkg/BaseSynchronizationLib: Fix function names in function headersMichael Kinney
Some of the function names in function header comment blocks in assembly files do not match the symbol name in the assembly sources. Update function header comment blocks to match symbol name. Cc: Liming Gao <liming.gao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Andrew Fish <afish@apple.com> Cc: Jeff Fan <jeff.fan@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-17MdePkg/BaseSynchronizationLib: Add volatile Interlocked*() APIsMichael Kinney
The SpinLock functions in the SynchronicationLib use volatile parameters to keep compiler from optimizing these functions too much. The volatile keyword is missing from the Interlocked*() functions in this same library instance. Update the library instance to consistently use volatile on all functions in the SynchronizationLib class. Cc: Liming Gao <liming.gao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Andrew Fish <afish@apple.com> Cc: Jeff Fan <jeff.fan@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-17MdePkg/Include: Add volatile to SynchronizationLib parametersMichael Kinney
The SpinLock functions in the SynchronicationLib use volatile parameters to keep compiler from optimizing these functions too much. The volatile keyword is missing from the Interlocked*() functions in this same library class. Update the library class to consistently use volatile on all functions in this class. Cc: Liming Gao <liming.gao@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Andrew Fish <afish@apple.com> Cc: Jeff Fan <jeff.fan@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-17MdePkg/BaseMemoryLib: Fix VS2015 build errorMichael Kinney
https://bugzilla.tianocore.org/show_bug.cgi?id=237 Make the smallest change possible to workaround a VS2015 build error. The change is to the loop that handles the case where neither the source nor the destination are 64-bit or 32-bit aligned and the logic falls through to a loop that performs the copy as bytes. Only the loop that copies bytes backwards needs to be updated to avoid the VS2015 build error. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-17MdePkg HobLib: Check FV alignment when building FV HOBStar Zeng
If the FvImage buffer is not at its required alignment, then ASSERT(). Also update the function header description of BuildFv(2)Hob() correspondingly. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=205 Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
2016-11-16MdePkg/BaseLib: Add one wrapper on RdRand access for parameter check.Qin Long
Add one wrapper implementation over assembly RdRand access to check possible NULL parameter, for better alignment with comment description. Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qin Long <qin.long@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-14MdePkg: Fix spec mismatch in string representation of EMMC dev nodeFeng Tian
Cc: Eric Jin <eric.jin@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-11-09MdePkg UefiDevicePathLib: Validate before touch input buffer.Eric Dong
Current code not validate the input buffer before touch. it may touch the buffer outside the validate scope. This patch validate the input size big enough to touch the first node. Cc: Ruiyu NI <ruiyu.ni@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com>
2016-11-09MdePkg UefiDevicePathLib: Rollback former change.Eric Dong
Former patch still has some bugs, so rollback it and enhance the original code. Cc: Ruiyu NI <ruiyu.ni@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com>
2016-11-09MdePkg DevicePathLib: Validate before touch input buffer.Eric Dong
Current code not validate the input buffer before touch. it may touch the buffer outside the validate scope. This patch validate the input size big enough to touch the first node. Cc: Ruiyu NI <ruiyu.ni@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com>
2016-11-09MdePkg DevicePathLib: Rollback former change.Eric Dong
Former patch still has some bugs, so rollback it and enhance the original code. Cc: Ruiyu NI <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2016-11-04MdePkg/BaseMemoryLib*: check for zero length in ZeroMem ()Ard Biesheuvel
Unlike other string functions in this library, ZeroMem () does not return early when the length of the input buffer is 0. So add the same to ZeroMem () as well, for all implementations of BaseMemoryLib living under MdePkg/ This fixes an issue with the ARM implementation of BaseMemoryLibOPtDxe, whose InternalMemZeroMem code does not expect a length of 0, and always writes at least a single byte. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-11-04MdePkg/BaseLib: Move CHAR_NULL definition to Base.h in BaseLibSong, BinX
- Required unicode control chars -> Null character - Remove CHAR_NULL definition in SimpleTextIn.h - https://bugzilla.tianocore.org/show_bug.cgi?id=172 Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Bell Song <binx.song@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-27MdePkg/Include: Add enumeration size checks to Base.hMichael Kinney
https://bugzilla.tianocore.org/show_bug.cgi?id=181 Add size check for 8-bit, 16-bit, and 32-bit enums to make sure they follow the UEFI Specification 2.3.1 Data Types. <Enumerated Type> Element of a standard ANSI C enum type declaration. Type INT32.or UINT32. ANSI C does not define the size of sign of an enum so they should never be used in structures. ANSI C integer promotion rules make INT32 or UINT32 interchangeable when passed as an argument to a function. Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-27MdePkg/PciSegmentLib: Optimize PCI_SEGMENT_LIB_ADDRESS()Michael Kinney
https://bugzilla.tianocore.org/show_bug.cgi?id=180 The PCI_SEGMENT_LIB_ADDRESS() macro puts the Segment number into bits 32..47 of the logical address that is returned. The portable method to put Segment in this bit range is to use LShitU64(). For 64-bit CPUs, this is optimized well by the compiler. For 32-bit CPUs, a call to LSHiftU64() is included in the generated binaries. However, if the Segment parameter is 0, then no shift is required. Add a check for Segment set to 0 and provide an optimized macro implementation that does not call LShiftU64(). Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-27MdePkg PeiServicesLib: Make sure FvInfo has FFS2 format if NULL FvFormatStar Zeng
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=160 Cc: Liming Gao <liming.gao@intel.com> Cc: Sean Brogan <sean.brogan@microsoft.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-27MdePkg/Include/Base.h: introduce the ARRAY_SIZE() function-like macroLaszlo Ersek
Several modules use ARRAY_SIZE() already; centralize the definition. (The module-specific macro definitions are guarded by #ifndef directives at this point.) Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Cecil Sheng <cecil.sheng@hpe.com> Cc: Chao Zhang <chao.b.zhang@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Daryl McDaniel <edk2-lists@mc2research.org> Cc: David Wei <david.wei@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Feng Tian <feng.tian@intel.com> Cc: Gary Lin <glin@suse.com> Cc: Jaben Carsey <jaben.carsey@intel.com> Cc: Jeff Fan <jeff.fan@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Siyuan Fu <siyuan.fu@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Tim He <tim.he@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-10-26MdePkg ACPI60: Update MADT Revision per ACPI 6.0 Errata ALiming Gao
Fix issue: https://bugzilla.tianocore.org/show_bug.cgi?id=94 Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2016-10-26MdePkg ACPI51: Update GIC version per ACPI 5.1 Errata BLiming Gao
Fix issue: https://bugzilla.tianocore.org/show_bug.cgi?id=95 Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2016-10-25MdePkg/DebugLib.h: add ASSERT_RETURN_ERROR()Laszlo Ersek
ASSERT_EFI_ERROR() cannot be used in BASE type modules because - the replacement text calls EFI_ERROR(), - EFI_ERROR() is defined in "MdePkg/Include/Uefi/UefiBaseType.h", - the inclusion of "UefiBaseType.h" is not required for BASE type modules. While ASSERT (!RETURN_ERROR (StatusParameter)) would be a functional statement in BASE type modules, it would be less convenient and less informative: ASSERT_EFI_ERROR() prints the actual StatusParameter. Hence add ASSERT_RETURN_ERROR(), paralleling ASSERT_EFI_ERROR(). Copy the original macro definition and update it as follows: - replace EFI with RETURN, - wrap overlong lines in the comment block and in the code, - EFI_D_ERROR is deprecated, so employ DEBUG_ERROR instead. Cc: Liming Gao <liming.gao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=166 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com> Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> # RVCT Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
2016-10-25MdePkg BaseMemoryLibOptDxe: Add function comment for InternalMemCompareGuidLiming Gao
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
2016-10-21MdePkg: Fix typos in commentsGary Lin
- Resuts -> Results - outputed -> outputted - specifiecd -> specified - TURE -> TRUE - specifed -> specified - Pointion -> Position - Arrary -> Array - elasped -> elapsed - paramter -> parameter - Sumbit -> Submit Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-20MdePkg: Add ACPI Low Power Idle Table (LPIT) definitionsGiri P Mudusuru
ACPI Low Power Idle Table (LPIT) Revision 001, dated July 2014 http://www.uefi.org/sites/default/files/resources/ACPI_Low_Power_Idle_Table.pdf Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Giri P Mudusuru <giri.p.mudusuru@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2016-10-19MdePkg: Merge ShellBase.h and remove Efi prefix from header filesRuiyu Ni
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Liming Gao <liming.gao@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
2016-10-19MdePkg: Include Shell/ShellDynamicCommand/ShellParameters definitionsRuiyu Ni
Move Shell/ShellDynamicCommand/ShellParameters definitions from ShellPkg to MdePkg. The following patches will rename the header file name. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com>
2016-10-19MdePkg UefiDevicePathLibDevicePathProtocol: Validate before use.Eric Dong
In IsDevicePathValid API, code should validate the device path buffer not exceed the input MaxSize before reference the path info. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-10-19MdePkg UefiDevicePathLib: Validate buffer length before use buffer.Eric Dong
In IsDevicePathValid API, code should validate the device path buffer not exceed the input MaxSize before reference the path info. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-10-18MdePkg/BaseLib: Remove the unnecessary '_' before library APIs in ASM/NASMHao Wu
The leading underscore (i.e. '_') before the names of some BaseLib library API in ASM/NASM files is unnecessary. It will cause link error with GCC tool chains. Cc: Liming Gao <liming.gao@intel.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-18MdePkg BaseSynchronizationLib InterlockedCompareExchange64: Fix ICC buildLiming Gao
Remove extra qword in nasm code to make it pass build. This file is only built in INTEL ICC compiler. So, there is missing build check for it. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com>
2016-10-18MdePkg/TrEEProtocol.h: Fix typo 'Ihis' with 'This' in commentHao Wu
Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
2016-10-12MdePkg/GraphicsInfoHob: Add GraphicsDeviceInfo HOB GUID and structureRuiyu Ni
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-10-09MdePkg:Correct the comment for the DEBUG_NET.Zhang Lubo
Generalize the comment for the DEBUG_NET #define DEBUG_NET 0x00004000 // SNP Driver to Network IO Driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo <lubo.zhang@intel.com> Cc: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com> Cc: Subramanian Sriram <sriram-s@hpe.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Ye Ting <ting.ye@intel.com> Reviewed-by: Sriram Subramanian <sriram-s@hpe.com>
2016-10-07MdePkg: Fix some typing errors in the header filesThomas Huth
Correct the typos in some header files of MdePkg. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
2016-10-07MdePkg: Fix some typing errorsThomas Huth
Correct the typos in some files of MdePkg. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
2016-09-28MdePkg/HiiImage.h: Include GraphicsOutput.hRuiyu Ni
HiiImage.h uses EFI_GRAPHICS_OUTPUT_BLT_PIXEL which is defined in GraphicsOutput.h. Include GraphicsOutput.h to avoid build failure from consumer of HiiImage protocol. Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Liming Gao <liming.gao@intel.com> Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
2016-09-28MdePkg/HiiImageDecoder.h: Add missing EFI_HII_IMAGE_DECODER_OTHER_INFORuiyu Ni
Besides adding the missing structure EFI_HII_IMAGE_DECODER_OTHER_INFO, the patch also correct some typo. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-28MdePkg/HiiImageDecoder.h: Rename from ImageDecoder.hRuiyu Ni
Rename the protocol header file to follow EDKII file name rule before the HiiImageDecoder protocol is used by anyone. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-27MdePkg/BaseMemoryLibOptDxe: replace deprecated uses of IT blocksArd Biesheuvel
The ARM architecture version 8 deprecates all uses of the IT instruction except cases where it is followed by a single narrow instruction. So replace any occurrences with equivalent sequences that adhere to the new rules. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-27MdePkg/BaseMemoryLibOptDxe ARM: fix Thumb-2 bug in ScanMem()Ard Biesheuvel
The ARM ScanMem() in BaseMemoryLibOptDxe contains code from the open source cortex-strings library, and inherited a bug from it where the conditional execution of a sequence of instructions is erroneously made dependent on the same condition. Since the final 'addeq' is supposed to be dependent on the preceding 'tsteq' instruction, they cannot be part of the same IT block. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-27MdePkg: Add SMM PciExpressLib InstanceGao, Liming
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Felix Polyudov <felixp@ami.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-27MdePkg UefiHii: Add IMAGE_TOKEN macro to access image resource in C and VFRLiming Gao
Cc: Eric Dong <eric.dong@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Dandan Bi <dandan.bi@intel.com>
2016-09-23MdePkg/BaseMemoryLibOptDxe ARM AARCH64: fix thinko in SetMem##Ard Biesheuvel
The new InternalMemSetMem##() implementations for ARM and AARCH64 in BaseMemoryLibOptDxe fail to take into account that the 'length' argument is not in bytes, but in number of items to be copied. So multiply by the item size before proceeding. Reported-by: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com> Tested-by: Laszlo Ersek <lersek@redhat.com>
2016-09-21MdePkg/BaseMemoryLibOptDxe ARM|AARCH64: implement accelerated GUID functionsArd Biesheuvel
As reported by Vishal, CompareGuid() is a hotspot, and switching from BaseMemoryLibStm in ArmPkg/ to BaseMemoryLibOptDxe causes a noticeable performance regression due to the fact that BaseMemoryLibOptDxe uses unaligned accessors explicitly to implement CompareGuid() and the related functions. Since BaseMemoryLibOptDxe on ARM and AARCH64 can only be used in contexts where unaligned accesses are allowed, reimplement these functions for ARM and AARCH64 specifically, using wide accessors that can tolerate any misalignment. Reported-by: "Oliyil Kunnil, Vishal" <vishalo@qti.qualcomm.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-21MdePkg/BaseMemoryLibOptDxe ARM: fix arithmetic bugs in CompareMem()Ard Biesheuvel
Fix two bugs: - Erroneous shift of 2 in a bytes to bits conversion. - Use reverse subtract rather than negate for value that is subsequently used as operand #2 in a shift operation. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-13MdePkg/BaseMemoryLibOptDxe ARM|AARCH64: disallow use in SEC & PEI phasesArd Biesheuvel
The new accelerated ARM and AARCH64 implementations take advantage of features that are only available when the MMU and Dcache are on. So restrict the use of this library to the DXE phase or later. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>
2016-09-13MdePkg/BaseMemoryLibOptDxe: add accelerated AARCH64 routinesArd Biesheuvel
This adds AARCH64 support to BaseMemoryLibOptDxe, based on the cortex-strings library. All string routines are accelerated except ScanMem16, ScanMem32, ScanMem64 and IsZeroBuffer, which can wait for another day. (Very few occurrences exist in the codebase) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Liming Gao <liming.gao@intel.com>