diff target-utils/libbase/osmodelay.S @ 0:e7502631a0f9

initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Jun 2016 00:13:35 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/target-utils/libbase/osmodelay.S	Sat Jun 11 00:13:35 2016 +0000
@@ -0,0 +1,30 @@
+/*
+ * This assembly module provides a replica of OsmocomBB's bogo-millisecond
+ * delay_ms() function.  It is literally a copy of what OsmocomBB's delay_ms()
+ * compiles to with their gcc version and their optimization settings, as seen
+ * by doing arm-elf-objdump on their lib/delay.o.
+ *
+ * This hack is intended for those cases where we have to copy OsmocomBB's
+ * black magic voodoo operations with no ability to understand what is actually
+ * needed, such as SPCA552E initialization on the Pirelli DP-L10.
+ */
+
+	.text
+	.code	32
+	.globl	osmo_delay_ms
+osmo_delay_ms:
+	mov     r3, #0
+	sub     sp, sp, #4
+	str     r3, [sp]
+	ldr     r3, =1300
+	mul     r3, r0, r3
+	b       2f
+1:	ldr     r2, [sp]
+	ldr     r2, [sp]
+	add     r2, r2, #1
+	str     r2, [sp]
+2:	ldr     r2, [sp]
+	cmp     r2, r3
+	bcc     1b
+	add     sp, sp, #4
+	bx      lr