view target-utils/libcommon/osmodelay.S @ 168:60afcd233b04

gsm-fw: first conditionally-built feature: ETM
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Tue, 19 Nov 2013 06:06:42 +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