1/* 2 * Copyright (c) 2020, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7#include <arch.h> 8#include <asm_macros.S> 9#include <common/bl_common.h> 10#include <generic.h> 11#include <cpu_macros.S> 12#include <plat_macros.S> 13 14 /* --------------------------------------------- 15 * Disable L1 data cache and unified L2 cache 16 * --------------------------------------------- 17 */ 18func generic_disable_dcache 19 mrs x1, sctlr_el3 20 bic x1, x1, #SCTLR_C_BIT 21 msr sctlr_el3, x1 22 isb 23 ret 24endfunc generic_disable_dcache 25 26func generic_core_pwr_dwn 27 mov x18, x30 28 29 /* --------------------------------------------- 30 * Turn off caches. 31 * --------------------------------------------- 32 */ 33 bl generic_disable_dcache 34 35 /* --------------------------------------------- 36 * Flush L1 caches. 37 * --------------------------------------------- 38 */ 39 mov x0, #DCCISW 40 bl dcsw_op_level1 41 42 ret x18 43endfunc generic_core_pwr_dwn 44 45func generic_cluster_pwr_dwn 46 mov x18, x30 47 48 /* --------------------------------------------- 49 * Turn off caches. 50 * --------------------------------------------- 51 */ 52 bl generic_disable_dcache 53 54 /* --------------------------------------------- 55 * Flush L1 caches. 56 * --------------------------------------------- 57 */ 58 mov x0, #DCCISW 59 bl dcsw_op_level1 60 61 /* --------------------------------------------- 62 * Disable the optional ACP. 63 * --------------------------------------------- 64 */ 65 bl plat_disable_acp 66 67 /* --------------------------------------------- 68 * Flush L2 caches. 69 * --------------------------------------------- 70 */ 71 mov x0, #DCCISW 72 bl dcsw_op_level2 73 74 ret x18 75 76endfunc generic_cluster_pwr_dwn 77 78/* --------------------------------------------- 79 * Unimplemented functions. 80 * --------------------------------------------- 81 */ 82.equ generic_errata_report, 0 83.equ generic_cpu_reg_dump, 0 84.equ generic_reset_func, 0 85 86declare_cpu_ops generic, AARCH64_GENERIC_MIDR, \ 87 generic_reset_func, \ 88 generic_core_pwr_dwn, \ 89 generic_cluster_pwr_dwn 90