ARM: shmobile: rcar-gen2: Make sure CNTVOFF is initialized on CA7/15
[linux-2.6-block.git] / arch / arm / mach-shmobile / headsmp-apmu.S
CommitLineData
3fd45a13
GU
1/*
2 * SMP support for APMU based systems with Cortex A7/A15
3 *
4 * Copyright (C) 2014 Renesas Electronics Corporation
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#include <linux/linkage.h>
12#include <asm/assembler.h>
13
14ENTRY(shmobile_init_cntvoff)
15 /*
16 * CNTVOFF has to be initialized either from non-secure Hypervisor
17 * mode or secure Monitor mode with SCR.NS==1. If TrustZone is enabled
18 * then it should be handled by the secure code
19 */
20 cps #MON_MODE
21 mrc p15, 0, r1, c1, c1, 0 /* Get Secure Config */
22 orr r0, r1, #1
23 mcr p15, 0, r0, c1, c1, 0 /* Set Non Secure bit */
24 instr_sync
25 mov r0, #0
26 mcrr p15, 4, r0, r0, c14 /* CNTVOFF = 0 */
27 instr_sync
28 mcr p15, 0, r1, c1, c1, 0 /* Set Secure bit */
29 instr_sync
30 cps #SVC_MODE
31 ret lr
32ENDPROC(shmobile_init_cntvoff)
33
34ENTRY(shmobile_boot_apmu)
35 bl shmobile_init_cntvoff
36 b secondary_startup
37ENDPROC(shmobile_boot_apmu)