1*1bb92983SJerome Forissier/* SPDX-License-Identifier: BSD-2-Clause */ 27ce47501SPeng Fan/* 37ce47501SPeng Fan * Copyright 2017 NXP 47ce47501SPeng Fan */ 57ce47501SPeng Fan 67ce47501SPeng Fan#include <arm.h> 77ce47501SPeng Fan#include <arm32_macros.S> 87ce47501SPeng Fan#include <asm.S> 97ce47501SPeng Fan#include <kernel/cache_helpers.h> 107ce47501SPeng Fan 117ce47501SPeng FanFUNC psci_disable_smp, : 127ce47501SPeng Fan read_actlr r0 137ce47501SPeng Fan bic r0, r0, #ACTLR_SMP 147ce47501SPeng Fan write_actlr r0 157ce47501SPeng Fan isb 167ce47501SPeng Fan bx lr 177ce47501SPeng FanEND_FUNC psci_disable_smp 187ce47501SPeng Fan 197ce47501SPeng FanFUNC psci_enable_smp, : 207ce47501SPeng Fan read_actlr r0 217ce47501SPeng Fan orr r0, r0, #ACTLR_SMP 227ce47501SPeng Fan write_actlr r0 237ce47501SPeng Fan isb 247ce47501SPeng Fan bx lr 257ce47501SPeng FanEND_FUNC psci_enable_smp 267ce47501SPeng Fan 277ce47501SPeng FanFUNC psci_armv7_cpu_off, : 287ce47501SPeng Fan push {r12, lr} 292fcf4eaaSEtienne CarriereUNWIND( .save {r12, lr}) 307ce47501SPeng Fan 317ce47501SPeng Fan mov r0, #DCACHE_OP_CLEAN_INV 327ce47501SPeng Fan bl dcache_op_all 337ce47501SPeng Fan 347ce47501SPeng Fan /* Disable Cache */ 357ce47501SPeng Fan read_sctlr r0 367ce47501SPeng Fan bic r0, r0, #SCTLR_C 377ce47501SPeng Fan write_sctlr r0 387ce47501SPeng Fan isb 397ce47501SPeng Fan dsb 407ce47501SPeng Fan 417ce47501SPeng Fan mov r0, #DCACHE_OP_CLEAN_INV 427ce47501SPeng Fan bl dcache_op_all 437ce47501SPeng Fan 447ce47501SPeng Fan clrex 457ce47501SPeng Fan 467ce47501SPeng Fan bl psci_disable_smp 477ce47501SPeng Fan 487ce47501SPeng Fan pop {r12, pc} 497ce47501SPeng FanEND_FUNC psci_armv7_cpu_off 50