FreeCalypso > hg > freecalypso-sw
diff target-utils/libbase/osmodelay.S @ 991:5cff3579814c
target-utils: libbase factored out of libcommon
The library dependency order is now strictly unidirectional
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Wed, 30 Dec 2015 20:48:12 +0000 |
parents | target-utils/libcommon/osmodelay.S@07b686248ab7 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/target-utils/libbase/osmodelay.S Wed Dec 30 20:48:12 2015 +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