view target-utils/libcommon/osmodelay.S @ 554:3a0ce0ea4035

gsm-fw/L1/tpudrv/tpudrv.h: Leonardo version replaced with LoCosto-based one; l1dmacro_rx_nb() and l1dmacro_rx_cont() prototypes fixed not to include the csf_filter_choice parameter in the Calypso configuration
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Mon, 04 Aug 2014 04:57:24 +0000
parents 07b686248ab7
children
line wrap: on
line source

/*
 * 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