1234567891011121314151617181920212223242526272829303132 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (C) 2014 Renesas Electronics Corporation
- *
- * Initialization of CNTVOFF register from secure mode
- *
- */
- #include <linux/linkage.h>
- #include <asm/assembler.h>
- ENTRY(secure_cntvoff_init)
- .arch armv7-a
- /*
- * CNTVOFF has to be initialized either from non-secure Hypervisor
- * mode or secure Monitor mode with SCR.NS==1. If TrustZone is enabled
- * then it should be handled by the secure code. The CPU must implement
- * the virtualization extensions.
- */
- cps #MON_MODE
- mrc p15, 0, r1, c1, c1, 0 /* Get Secure Config */
- orr r0, r1, #1
- mcr p15, 0, r0, c1, c1, 0 /* Set Non Secure bit */
- isb
- mov r0, #0
- mcrr p15, 4, r0, r0, c14 /* CNTVOFF = 0 */
- isb
- mcr p15, 0, r1, c1, c1, 0 /* Set Secure bit */
- isb
- cps #SVC_MODE
- ret lr
- ENDPROC(secure_cntvoff_init)
|