Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Copyright 2011 Freescale Semiconductor, Inc.
0004  * Copyright 2011 Linaro Ltd.
0005  */
0006 
0007 #include <linux/linkage.h>
0008 #include <linux/init.h>
0009 #include <asm/assembler.h>
0010 
0011 diag_reg_offset:
0012     .word   g_diag_reg - .
0013 
0014     .macro  set_diag_reg
0015     adr r0, diag_reg_offset
0016     ldr r1, [r0]
0017     add r1, r1, r0      @ r1 = physical &g_diag_reg
0018     ldr r0, [r1]
0019     mcr p15, 0, r0, c15, c0, 1  @ write diagnostic register
0020     .endm
0021 
0022 ENTRY(v7_secondary_startup)
0023 ARM_BE8(setend be)          @ go BE8 if entered LE
0024     mrc p15, 0, r0, c0, c0, 0
0025     lsl r0, r0, #16
0026     lsr r0, r0, #20
0027     /* 0xc07 is cortex A7's ID */
0028     mov r1, #0xc00
0029     orr r1, #0x7
0030     cmp r0, r1
0031     beq secondary_startup
0032 
0033     set_diag_reg
0034     b   secondary_startup
0035 ENDPROC(v7_secondary_startup)