ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/marvell/uboot/lib/sha_neon/armv7-neon.S b/marvell/uboot/lib/sha_neon/armv7-neon.S
new file mode 100644
index 0000000..ab13f3e
--- /dev/null
+++ b/marvell/uboot/lib/sha_neon/armv7-neon.S
@@ -0,0 +1,48 @@
+#include <linux/linkage.h>
+
+.text
+.code 32
+.fpu neon
+
+ENTRY(neon_en_check)
+ mrc p15, 0, r1, c1, c0, 2
+ tst r1, #(0x3 << 20)
+ beq no_neon
+
+ fmrx r1, FPEXC
+ tst r1, #(1 << 30)
+ beq no_neon
+
+ mov r0, #1
+ b exit
+
+no_neon:
+ mov r0, #0
+
+exit:
+ mov pc, lr
+ENDPROC(neon_en_check)
+
+ENTRY(neon_enable)
+ /* Enable the the VFP */
+ mrc p15, 0, r1, c1, c0, 2
+ 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(neon_enable)
+
+ENTRY(neon_disable)
+ /* Enable the the VFP */
+ fmrx r1, FPEXC
+ bic r1, r1, #(1 << 30)
+ fmxr FPEXC, r1
+
+ /* Move back to caller */
+ mov pc, lr
+ENDPROC(neon_disable)
\ No newline at end of file