summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu/armv7/zynq/lowlevel_init.S
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2015-01-23 09:45:12 +0100
committerMichal Simek <michal.simek@xilinx.com>2015-01-26 08:55:31 +0100
commitc08cfc2d2cf43c443f74549aefd7a7f2ffc3d7de (patch)
tree2fec9bd4072ee64f9238b317d1741b58a4d8c16a /arch/arm/cpu/armv7/zynq/lowlevel_init.S
parent92fa7f53f1f3f03296f8ffb14bdf1baefab83368 (diff)
downloadblackbird-obmc-uboot-c08cfc2d2cf43c443f74549aefd7a7f2ffc3d7de.tar.gz
blackbird-obmc-uboot-c08cfc2d2cf43c443f74549aefd7a7f2ffc3d7de.zip
ARM: zynq: Enable the Neon instructions
Added the lowlevel_init to enable the Neon instructions. Initially the u-boot was causing undefined instruction exception if loaded through tcl, and working fine if loaded through FSBL. The exception was causing in convertion formula of given time to ticks. It was because, the Neon instructions were disabled and hence causing the undefined exception. In FSBL case, the FSBL was enabling the Neon instructions. Hence, added the lowlevel_init to enable the Neon instructions. Also enable neon instructions for non-xilinx toolchain. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Acked-by: Radhey Shyam Pandey <radheys@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'arch/arm/cpu/armv7/zynq/lowlevel_init.S')
-rw-r--r--arch/arm/cpu/armv7/zynq/lowlevel_init.S26
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/zynq/lowlevel_init.S b/arch/arm/cpu/armv7/zynq/lowlevel_init.S
new file mode 100644
index 0000000000..6d714b711c
--- /dev/null
+++ b/arch/arm/cpu/armv7/zynq/lowlevel_init.S
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 Xilinx, Inc. All rights reserved.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <asm-offsets.h>
+#include <config.h>
+#include <linux/linkage.h>
+
+ENTRY(lowlevel_init)
+
+ /* Enable the the VFP */
+ mrc p15, 0, r1, c1, c0, 2
+ orr r1, r1, #(0x3 << 20)
+ orr r1, r1, #(0x3 << 20)
+ mcr p15, 0, r1, c1, c0, 2
+ isb
+ fmrx r1, FPEXC
+ orr r1,r1, #(1<<30)
+ fmxr FPEXC, r1
+
+ /* Move back to caller */
+ mov pc, lr
+
+ENDPROC(lowlevel_init)
OpenPOWER on IntegriCloud