1/* SPDX-License-Identifier: BSD-2-Clause */ 2/* 3 * Copyright 2017 NXP 4 */ 5 6#include <arm.h> 7#include <arm32_macros.S> 8#include <asm.S> 9#include <kernel/cache_helpers.h> 10 11FUNC psci_disable_smp, : 12UNWIND( .fnstart) 13 read_actlr r0 14 bic r0, r0, #ACTLR_SMP 15 write_actlr r0 16 isb 17 bx lr 18UNWIND( .fnend) 19END_FUNC psci_disable_smp 20 21FUNC psci_enable_smp, : 22UNWIND( .fnstart) 23 read_actlr r0 24 orr r0, r0, #ACTLR_SMP 25 write_actlr r0 26 isb 27 bx lr 28UNWIND( .fnend) 29END_FUNC psci_enable_smp 30 31FUNC psci_armv7_cpu_off, : 32UNWIND( .fnstart) 33 push {r12, lr} 34UNWIND( .save {r12, lr}) 35 36 mov r0, #DCACHE_OP_CLEAN_INV 37 bl dcache_op_all 38 39 /* Disable Cache */ 40 read_sctlr r0 41 bic r0, r0, #SCTLR_C 42 write_sctlr r0 43 isb 44 dsb 45 46 mov r0, #DCACHE_OP_CLEAN_INV 47 bl dcache_op_all 48 49 clrex 50 51 bl psci_disable_smp 52 53 pop {r12, pc} 54UNWIND( .fnend) 55END_FUNC psci_armv7_cpu_off 56