Move FPEXC32_EL2 to FP ContextThe FPEXC32_EL2 register controls SIMD and FP functionality when thelower ELs are executing in AArch32 mode. It is architecturally mappedto AArch32 system register F
Move FPEXC32_EL2 to FP ContextThe FPEXC32_EL2 register controls SIMD and FP functionality when thelower ELs are executing in AArch32 mode. It is architecturally mappedto AArch32 system register FPEXC.This patch removes FPEXC32_EL2 register from the System Register contextand adds it to the floating-point context. EL3 only saves / restores thefloating-point context if the build option CTX_INCLUDE_FPREGS is set to 1.The rationale for this change is that if the Secure world is using FPfunctionality and EL3 is not managing the FP context, then the Secureworld will save / restore the appropriate FP registers.NOTE - this is a break in behaviour in the unlikely case thatCTX_INCLUDE_FPREGS is set to 0 and the platform contains an AArch32Secure Payload that modifies FPEXC, but does not save and restorethis registerChange-Id: Iab80abcbfe302752d52b323b4abcc334b585c184Signed-off-by: David Cunado <david.cunado@arm.com>
show more ...
Init and save / restore of PMCR_EL0 / PMCRCurrently TF does not initialise the PMCR_EL0 register inthe secure context or save/restore the register.In particular, the DP field may not be set to o
Init and save / restore of PMCR_EL0 / PMCRCurrently TF does not initialise the PMCR_EL0 register inthe secure context or save/restore the register.In particular, the DP field may not be set to one to prohibitcycle counting in the secure state, even though event countinggenerally is prohibited via the default setting of MDCR_EL3.SMPEto 0.This patch initialises PMCR_EL0.DP to one in the secure stateto prohibit cycle counting and also initialises other fieldsthat have an architectually UNKNOWN reset value.Additionally, PMCR_EL0 is added to the list of registers that aresaved and restored during a world switch.Similar changes are made for PMCR for the AArch32 execution state.NOTE: secure world code at lower ELs that assume other values in PMCR_EL0will be impacted.Change-Id: Iae40e8c0a196d74053accf97063ebc257b4d2f3aSigned-off-by: David Cunado <david.cunado@arm.com>
aarch64: Enable Statistical Profiling Extensions for lower ELsSPE is only supported in non-secure state. Accesses to SPE specificregisters from SEL1 will trap to EL3. During a world switch, befo
aarch64: Enable Statistical Profiling Extensions for lower ELsSPE is only supported in non-secure state. Accesses to SPE specificregisters from SEL1 will trap to EL3. During a world switch, before`TTBR` is modified the SPE profiling buffers are drained. This is toavoid a potential invalid memory access in SEL1.SPE is architecturally specified only for AArch64.Change-Id: I04a96427d9f9d586c331913d815fdc726855f6b0Signed-off-by: dp-arm <dimitris.papastamos@arm.com>
include: add U()/ULL() macros for constantsThis patch uses the U() and ULL() macros for constants, to fix someof the signed-ness defects flagged by the MISRA scanner.Signed-off-by: Varun Wadekar
include: add U()/ULL() macros for constantsThis patch uses the U() and ULL() macros for constants, to fix someof the signed-ness defects flagged by the MISRA scanner.Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Use SPDX license identifiersTo make software license auditing simpler, use SPDX[0] licenseidentifiers instead of duplicating the license text in every file.NOTE: Files that have been imported by
Use SPDX license identifiersTo make software license auditing simpler, use SPDX[0] licenseidentifiers instead of duplicating the license text in every file.NOTE: Files that have been imported by FreeBSD have not been modified.[0]: https://spdx.org/Change-Id: I80a00e1f641b8cc075ca5a95b10607ed9ed8761aSigned-off-by: dp-arm <dimitris.papastamos@arm.com>
Introduce `el3_runtime` and `PSCI` librariesThis patch moves the PSCI services and BL31 frameworks like contextmanagement and per-cpu data into new library components `PSCI` and`el3_runtime` resp
Introduce `el3_runtime` and `PSCI` librariesThis patch moves the PSCI services and BL31 frameworks like contextmanagement and per-cpu data into new library components `PSCI` and`el3_runtime` respectively. This enables PSCI to be built independently fromBL31. A new `psci_lib.mk` makefile is introduced which adds the relevantPSCI library sources and gets included by `bl31.mk`. Other changes whichare done as part of this patch are:* The runtime services framework is now moved to the `common/` folder to enable reuse.* The `asm_macros.S` and `assert_macros.S` helpers are moved to architecture specific folder.* The `plat_psci_common.c` is moved from the `plat/common/aarch64/` folder to `plat/common` folder. The original file location now has a stub which just includes the file from new location to maintain platform compatibility.Most of the changes wouldn't affect platform builds as they just involvechanges to the generic bl1.mk and bl31.mk makefiles.NOTE: THE `plat_psci_common.c` FILE HAS MOVED LOCATION AND THE STUB FILE ATTHE ORIGINAL LOCATION IS NOW DEPRECATED. PLATFORMS SHOULD MODIFY THEIRMAKEFILES TO INCLUDE THE FILE FROM THE NEW LOCATION.Change-Id: I6bd87d5b59424995c6a65ef8076d4fda91ad5e86
1234