1fcaf2036SThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-or-later */ 21fc593feSArnd Bergmann/* 31fc593feSArnd Bergmann * Copyright 2011 Freescale Semiconductor, Inc. 41fc593feSArnd Bergmann * Copyright 2011 Linaro Ltd. 51fc593feSArnd Bergmann */ 61fc593feSArnd Bergmann 71fc593feSArnd Bergmann#include <linux/linkage.h> 81fc593feSArnd Bergmann#include <linux/init.h> 926e30c64SJohannes Berg#include <asm/assembler.h> 101fc593feSArnd Bergmann 11*a2faac39SNick Desaulniers.arch armv7-a 12*a2faac39SNick Desaulniers 13087bb283SShawn Guodiag_reg_offset: 14087bb283SShawn Guo .word g_diag_reg - . 15087bb283SShawn Guo 16087bb283SShawn Guo .macro set_diag_reg 17087bb283SShawn Guo adr r0, diag_reg_offset 18087bb283SShawn Guo ldr r1, [r0] 19087bb283SShawn Guo add r1, r1, r0 @ r1 = physical &g_diag_reg 20087bb283SShawn Guo ldr r0, [r1] 21087bb283SShawn Guo mcr p15, 0, r0, c15, c0, 1 @ write diagnostic register 22087bb283SShawn Guo .endm 23087bb283SShawn Guo 241fc593feSArnd BergmannENTRY(v7_secondary_startup) 2526e30c64SJohannes BergARM_BE8(setend be) @ go BE8 if entered LE 26e34645f4SAnson Huang mrc p15, 0, r0, c0, c0, 0 27e34645f4SAnson Huang lsl r0, r0, #16 28e34645f4SAnson Huang lsr r0, r0, #20 29e34645f4SAnson Huang /* 0xc07 is cortex A7's ID */ 30e34645f4SAnson Huang mov r1, #0xc00 31e34645f4SAnson Huang orr r1, #0x7 32e34645f4SAnson Huang cmp r0, r1 33e34645f4SAnson Huang beq secondary_startup 34e34645f4SAnson Huang 35087bb283SShawn Guo set_diag_reg 361fc593feSArnd Bergmann b secondary_startup 371fc593feSArnd BergmannENDPROC(v7_secondary_startup) 38