cortex_a65ae.S 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /*
  2. * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #include <arch.h>
  7. #include <asm_macros.S>
  8. #include <common/bl_common.h>
  9. #include <common/debug.h>
  10. #include <cortex_a65ae.h>
  11. #include <cpu_macros.S>
  12. #include <plat_macros.S>
  13. /* Hardware handled coherency */
  14. #if !HW_ASSISTED_COHERENCY
  15. #error "Cortex-A65AE must be compiled with HW_ASSISTED_COHERENCY enabled"
  16. #endif
  17. /* 64-bit only core */
  18. #if CTX_INCLUDE_AARCH32_REGS
  19. #error "Cortex-A65AE supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0"
  20. #endif
  21. /*
  22. * ERRATA_DSU_936184 :
  23. * The errata is defined in dsu_helpers.S but applies to cortex_a65ae
  24. * as well. Henceforth creating symbolic names to the already existing errata
  25. * workaround functions to get them registered under the Errata Framework.
  26. */
  27. .equ check_erratum_cortex_a65ae_936184, check_errata_dsu_936184
  28. .equ erratum_cortex_a65ae_936184_wa, errata_dsu_936184_wa
  29. add_erratum_entry cortex_a65ae, ERRATUM(936184), ERRATA_DSU_936184, APPLY_AT_RESET
  30. cpu_reset_func_start cortex_a65ae
  31. cpu_reset_func_end cortex_a65ae
  32. func cortex_a65ae_cpu_pwr_dwn
  33. sysreg_bit_set CORTEX_A65AE_CPUPWRCTLR_EL1, CORTEX_A65AE_CPUPWRCTLR_EL1_CORE_PWRDN_BIT
  34. isb
  35. ret
  36. endfunc cortex_a65ae_cpu_pwr_dwn
  37. .section .rodata.cortex_a65ae_regs, "aS"
  38. cortex_a65ae_regs: /* The ascii list of register names to be reported */
  39. .asciz "cpuectlr_el1", ""
  40. func cortex_a65ae_cpu_reg_dump
  41. adr x6, cortex_a65ae_regs
  42. mrs x8, CORTEX_A65AE_ECTLR_EL1
  43. ret
  44. endfunc cortex_a65ae_cpu_reg_dump
  45. declare_cpu_ops cortex_a65ae, CORTEX_A65AE_MIDR, \
  46. cortex_a65ae_reset_func, \
  47. cortex_a65ae_cpu_pwr_dwn