blob: 7b60ca7454b88319aaf832f573087ca0213d2b8b [file] [log] [blame]
Jason Liudec11122011-11-25 00:18:02 +00001/*
2 * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation; either version 2 of
7 * the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
17 * MA 02111-1307 USA
18 */
19.section ".text.init", "x"
20
Aneesh Vfd8798b2012-03-08 07:20:18 +000021#include <linux/linkage.h>
Jason Liudec11122011-11-25 00:18:02 +000022
Fabio Estevamc69880c2013-01-04 16:07:26 +000023.macro init_arm_errata
24 /* ARM erratum ID #743622 */
25 mrc p15, 0, r10, c15, c0, 1 /* read diagnostic register */
26 orr r10, r10, #1 << 6 /* set bit #6 */
27 /* ARM erratum ID #751472 */
28 orr r10, r10, #1 << 11 /* set bit #11 */
29 mcr p15, 0, r10, c15, c0, 1 /* write diagnostic register */
30.endm
31
Aneesh Vfd8798b2012-03-08 07:20:18 +000032ENTRY(lowlevel_init)
Fabio Estevamc69880c2013-01-04 16:07:26 +000033 init_arm_errata
Jason Liudec11122011-11-25 00:18:02 +000034 mov pc, lr
Aneesh Vfd8798b2012-03-08 07:20:18 +000035ENDPROC(lowlevel_init)