cortex_a720_ae.S 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (c) 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 <cortex_a720_ae.h>
  10. #include <cpu_macros.S>
  11. #include <plat_macros.S>
  12. /* Hardware handled coherency */
  13. #if HW_ASSISTED_COHERENCY == 0
  14. #error "Cortex-A720AE must be compiled with HW_ASSISTED_COHERENCY enabled"
  15. #endif
  16. /* 64-bit only core */
  17. #if CTX_INCLUDE_AARCH32_REGS == 1
  18. #error "Cortex-A720AE supports only AArch64. Compile with CTX_INCLUDE_AARCH32_REGS=0"
  19. #endif
  20. cpu_reset_func_start cortex_a720_ae
  21. /* Disable speculative loads */
  22. msr SSBS, xzr
  23. cpu_reset_func_end cortex_a720_ae
  24. /* ----------------------------------------------------
  25. * HW will do the cache maintenance while powering down
  26. * ----------------------------------------------------
  27. */
  28. func cortex_a720_ae_core_pwr_dwn
  29. /* ---------------------------------------------------
  30. * Enable CPU power down bit in power control register
  31. * ---------------------------------------------------
  32. */
  33. sysreg_bit_set CORTEX_A720_AE_CPUPWRCTLR_EL1, CORTEX_A720_AE_CPUPWRCTLR_EL1_CORE_PWRDN_BIT
  34. isb
  35. ret
  36. endfunc cortex_a720_ae_core_pwr_dwn
  37. /* ---------------------------------------------
  38. * This function provides Cortex-A720AE specific
  39. * register information for crash reporting.
  40. * It needs to return with x6 pointing to
  41. * a list of register names in ascii and
  42. * x8 - x15 having values of registers to be
  43. * reported.
  44. * ---------------------------------------------
  45. */
  46. .section .rodata.cortex_a720_ae_regs, "aS"
  47. cortex_a720_ae_regs: /* The ascii list of register names to be reported */
  48. .asciz "cpuectlr_el1", ""
  49. func cortex_a720_ae_cpu_reg_dump
  50. adr x6, cortex_a720_ae_regs
  51. mrs x8, CORTEX_A720_AE_CPUECTLR_EL1
  52. ret
  53. endfunc cortex_a720_ae_cpu_reg_dump
  54. declare_cpu_ops cortex_a720_ae, CORTEX_A720_AE_MIDR, \
  55. cortex_a720_ae_reset_func, \
  56. cortex_a720_ae_core_pwr_dwn