13fd45a13SGeert Uytterhoeven/* 23fd45a13SGeert Uytterhoeven * SMP support for APMU based systems with Cortex A7/A15 33fd45a13SGeert Uytterhoeven * 43fd45a13SGeert Uytterhoeven * Copyright (C) 2014 Renesas Electronics Corporation 53fd45a13SGeert Uytterhoeven * 63fd45a13SGeert Uytterhoeven * This program is free software; you can redistribute it and/or modify 73fd45a13SGeert Uytterhoeven * it under the terms of the GNU General Public License version 2 as 83fd45a13SGeert Uytterhoeven * published by the Free Software Foundation. 93fd45a13SGeert Uytterhoeven */ 103fd45a13SGeert Uytterhoeven 113fd45a13SGeert Uytterhoeven#include <linux/linkage.h> 123fd45a13SGeert Uytterhoeven#include <asm/assembler.h> 133fd45a13SGeert Uytterhoeven 143fd45a13SGeert UytterhoevenENTRY(shmobile_init_cntvoff) 153fd45a13SGeert Uytterhoeven /* 163fd45a13SGeert Uytterhoeven * CNTVOFF has to be initialized either from non-secure Hypervisor 173fd45a13SGeert Uytterhoeven * mode or secure Monitor mode with SCR.NS==1. If TrustZone is enabled 183fd45a13SGeert Uytterhoeven * then it should be handled by the secure code 193fd45a13SGeert Uytterhoeven */ 203fd45a13SGeert Uytterhoeven cps #MON_MODE 213fd45a13SGeert Uytterhoeven mrc p15, 0, r1, c1, c1, 0 /* Get Secure Config */ 223fd45a13SGeert Uytterhoeven orr r0, r1, #1 233fd45a13SGeert Uytterhoeven mcr p15, 0, r0, c1, c1, 0 /* Set Non Secure bit */ 243fd45a13SGeert Uytterhoeven instr_sync 253fd45a13SGeert Uytterhoeven mov r0, #0 263fd45a13SGeert Uytterhoeven mcrr p15, 4, r0, r0, c14 /* CNTVOFF = 0 */ 273fd45a13SGeert Uytterhoeven instr_sync 283fd45a13SGeert Uytterhoeven mcr p15, 0, r1, c1, c1, 0 /* Set Secure bit */ 293fd45a13SGeert Uytterhoeven instr_sync 303fd45a13SGeert Uytterhoeven cps #SVC_MODE 313fd45a13SGeert Uytterhoeven ret lr 323fd45a13SGeert UytterhoevenENDPROC(shmobile_init_cntvoff) 333fd45a13SGeert Uytterhoeven 34703ef76bSArnd Bergmann#ifdef CONFIG_SMP 353fd45a13SGeert UytterhoevenENTRY(shmobile_boot_apmu) 363fd45a13SGeert Uytterhoeven bl shmobile_init_cntvoff 373fd45a13SGeert Uytterhoeven b secondary_startup 383fd45a13SGeert UytterhoevenENDPROC(shmobile_boot_apmu) 39703ef76bSArnd Bergmann#endif 40