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
343fd45a13SGeert UytterhoevenENTRY(shmobile_boot_apmu)
353fd45a13SGeert Uytterhoeven	bl	shmobile_init_cntvoff
363fd45a13SGeert Uytterhoeven	b	secondary_startup
373fd45a13SGeert UytterhoevenENDPROC(shmobile_boot_apmu)
38