arm-trusted-firmware/lib/cpus/aarch64
Jayanth Dodderi Chidanand 38f762a5ee refactor(cpus): convert the Cortex-A65AE to use the errata framework
This involves replacing:
 * the reset_func with the standard cpu_reset_func_{start,end} to apply
   errata automatically
 * the <cpu>_errata_report with the errata_report_shim to report errata
   automatically
...and for each erratum:
 * the prologue with the workaround_<type>_start to do the checks and
   framework registration automatically
 * the epilogue with the workaround_<type>_end
 * the checker function with the check_erratum_<type> to make it more
   descriptive
 * This core has only errata related to DSU, which is defined under
   another file dsu_helpers.s but gets applied to A65AE as well.
   Hence symbolic names have been added to get them registered under
   errata framework.

It is important to note that the errata workaround sequences remain
unchanged and preserve their git blame.

Testing was conducted by:
 * Building for release with all errata flags enabled and running
   script in change 19136 to compare output of objdump for each errata.

 * Testing via script was not complete, as it directed to verify the
   check and the workaround functions of few erratas manually.

 * Manual comparison of disassembly of converted functions with non-
   converted functions

   aarch64-none-elf-objdump -D <trusted-firmware-a with conversion>/build/../release/bl31/bl31.elf
     vs
   aarch64-none-elf-objdump -D <trusted-firmware-a clean repo>/build/fvp/release/bl31/bl31.elf

 * Manual comparison of disassembly of both both files(bl31.elf)
   ensured, the ported changes were identical and hence verified.

 * Build for release with all errata flags enabled and run default
   tftf tests.

   CROSS_COMPILE=aarch64-none-elf- \
   make PLAT=fvp \
   ARCH=aarch64 \
   DEBUG=0 \
   HW_ASSISTED_COHERENCY=1 \
   USE_COHERENT_MEM=0 \
   CTX_INCLUDE_AARCH32_REGS=0 \
   ERRATA_DSU_936184=1 \
   BL33=/home/jaychi01/tf_a/tf-a-tests/build/fvp/release/tftf.bin \
   fip all -j12

 * Build for debug with all errata enabled and step through ArmDS
   at reset to ensure that if Errata are applicable then the workaround
   functions are entered precisely. In this case, errata is not
   applied as DSU does not has the ACP interface and hence the
   check_errata_dsu_936184 returns 0.

 * In summary, porting work for this CPU, does not adds any new changes
   as we are just creating macros via .equ, henceforth code remains
   identical.

Change-Id: Iab37295319b5ccd69428185b2d22af0ca9c07a5e
Signed-off-by: Jayanth Dodderi Chidanand <jayanthdodderi.chidanand@arm.com>
2023-07-27 09:35:12 +01:00
..
a64fx.S feat(cpus): add a64fx cpu to tf-a 2022-07-07 07:17:25 +09:00
aem_generic.S FVP_Base_AEMv8A platform: Fix cache maintenance operations 2019-08-16 11:30:37 +00:00
cortex_a35.S Cortex-A35: Implement workaround for errata 855472 2019-04-17 13:46:43 +01:00
cortex_a53.S refactor(cpus): rename errata_report.h to errata.h 2023-05-30 09:31:15 +01:00
cortex_a55.S feat(plat/qti): fix to support cpu errata 2022-07-29 18:15:32 +05:30
cortex_a57.S fix(security): apply SMCCC_ARCH_WORKAROUND_3 to A73/A75/A72/A57 2022-03-18 01:01:34 +02:00
cortex_a65.S Introducing support for Cortex-A65 2019-10-02 18:12:28 +02:00
cortex_a65ae.S refactor(cpus): convert the Cortex-A65AE to use the errata framework 2023-07-27 09:35:12 +01:00
cortex_a72.S fix(security): apply SMCCC_ARCH_WORKAROUND_3 to A73/A75/A72/A57 2022-03-18 01:01:34 +02:00
cortex_a73.S fix(security): apply SMCCC_ARCH_WORKAROUND_3 to A73/A75/A72/A57 2022-03-18 01:01:34 +02:00
cortex_a75.S refactor(cpus): convert the Cortex-A75 to use cpu helpers 2023-06-27 17:14:57 -04:00
cortex_a75_pubsub.c Sanitise includes across codebase 2019-01-04 10:43:17 +00:00
cortex_a76.S fix(cpus): workaround for Cortex-A76 erratum 2743102 2022-11-03 14:50:58 -05:00
cortex_a76ae.S fix(security): workaround for CVE-2022-23960 for A76AE, A78AE, A78C 2022-03-21 08:57:09 -05:00
cortex_a77.S fix(cpus): workaround for Cortex-A77 erratum 2743100 2022-11-10 15:51:16 +00:00
cortex_a78.S refactor(amu): unify ENABLE_AMU and ENABLE_FEAT_AMUv1 2023-03-27 19:36:00 +01:00
cortex_a78_ae.S refactor(amu): unify ENABLE_AMU and ENABLE_FEAT_AMUv1 2023-03-27 19:36:00 +01:00
cortex_a78c.S fix(cpus): workaround for Cortex-A78C erratum 1827440 2023-03-21 16:21:38 -05:00
cortex_a510.S refactor(cpus): convert the Cortex-A510 to use cpu helpers 2023-07-27 09:35:12 +01:00
cortex_a520.S chore: rename hayes to a520 2023-06-29 17:20:17 +02:00
cortex_a710.S fix(cpus): workaround for Cortex-A710 erratum 2282622 2023-01-09 23:17:48 -06:00
cortex_a715.S chore: rename Makalu to Cortex-A715 2023-05-30 09:52:14 +01:00
cortex_a720.S chore: rename hunter to a720 2023-06-29 16:20:01 +01:00
cortex_blackhawk.S feat(cpus): add support for blackhawk cpu 2023-04-04 17:16:53 +02:00
cortex_chaberton.S feat(cpus): add support for chaberton cpu 2023-04-04 17:16:46 +02:00
cortex_x1.S refactor(cpus): use BIT macro in a consistent manner 2023-04-28 13:18:28 +01:00
cortex_x2.S fix(cpus): workaround for Cortex-X2 erratum 2282622 2023-01-11 11:34:19 -06:00
cortex_x3.S fix(cpus): workaround for Cortex-X3 erratum 2615812 2022-11-17 09:41:40 +00:00
cortex_x4.S chore: rename hunter_elp to cortex-x4 2023-06-29 09:46:08 -05:00
cpu_helpers.S refactor(cpus): convert print_errata_status to C 2023-05-30 09:31:15 +01:00
cpuamu.c Sanitise includes across codebase 2019-01-04 10:43:17 +00:00
cpuamu_helpers.S Add support for Branch Target Identification 2019-05-24 14:44:45 +01:00
denver.S fix(cpus/denver): use CPU_NO_EXTRA3_FUNC for all variants 2022-05-24 15:32:33 +01:00
dsu_helpers.S feat(cpus): conform DSU errata to errata framework PCS 2023-06-08 15:34:53 -04:00
generic.S arm_fpga: Add support for unknown MPIDs 2020-09-25 15:45:50 +01:00
neoverse_e1.S DSU: Apply erratum 936184 for Neoverse N1/E1 2019-06-11 14:01:32 +01:00
neoverse_hermes.S feat(cpus): add support for hermes cpu 2023-06-27 10:49:38 -05:00
neoverse_n1.S fix(cpus): do not put RAS check before using esb 2023-04-24 17:32:22 +01:00
neoverse_n1_pubsub.c Rename Cortex-Ares to Neoverse N1 2019-02-19 13:50:07 +00:00
neoverse_n2.S refactor(amu): unify ENABLE_AMU and ENABLE_FEAT_AMUv1 2023-03-27 19:36:00 +01:00
neoverse_n_common.S Add support for Neoverse-N2 CPUs. 2020-11-30 19:12:56 +00:00
neoverse_poseidon.S fix(security): workaround for CVE-2022-23960 2022-05-11 19:05:48 +02:00
neoverse_v1.S fix(cpus): workaround for Neoverse V1 errata 2743233 2023-03-09 14:09:37 -06:00
neoverse_v2.S fix(cpus): workaround for Neoverse V2 erratum 2801372 2023-07-21 16:52:36 +02:00
qemu_max.S refactor(cpus): convert QEMU Max to use the errata framework 2023-06-27 15:41:56 +01:00
rainier.S refactor(cpus): convert Rainier to use errata framework 2023-06-27 15:42:10 +01:00
wa_cve_2017_5715_bpiall.S fix(security): apply SMCCC_ARCH_WORKAROUND_3 to A73/A75/A72/A57 2022-03-18 01:01:34 +02:00
wa_cve_2017_5715_mmu.S fix(security): apply SMCCC_ARCH_WORKAROUND_3 to A73/A75/A72/A57 2022-03-18 01:01:34 +02:00
wa_cve_2022_23960_bhb.S fix(security): optimisations for CVE-2022-23960 2022-10-26 16:45:12 -05:00
wa_cve_2022_23960_bhb_vector.S fix(security): workaround for CVE-2022-23960 2022-03-10 23:57:14 -06:00