FreeCalypso > hg > freecalypso-tools
diff target-utils/libbase/waitarm.S @ 495:06ad5e30e8d0
target-utils: wait_ARM_cycles() changed to 4 cycles per loop
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 25 May 2019 18:51:19 +0000 |
parents | 6228d27738d1 |
children |
line wrap: on
line diff
--- a/target-utils/libbase/waitarm.S Fri May 24 06:44:59 2019 +0000 +++ b/target-utils/libbase/waitarm.S Sat May 25 18:51:19 2019 +0000 @@ -1,8 +1,15 @@ /* - * This assembly module provides a wait_ARM_cycles() function just like - * in TI's firmware; it is meant to gradually replace and phase out - * osmo_delay_ms(). One loop count for this function equals 5 ARM clock - * cycles when running out of IRAM. + * This assembly module provides a wait_ARM_cycles() function similar to + * the one in TI's firmware; it is meant to gradually replace and phase out + * osmo_delay_ms(). One loop count for this function equals 4 ARM clock + * cycles when running out of IRAM; if the ARM clock is 52 MHz, 13 loop counts + * equal one microsecond. + * + * Note the instruction sequence difference from TI's firmware version: + * we use the SUBS instruction (equivalent of plain SUB in Thumb) and omit + * the CMP, which is why our version is 4 cycles per loop (when running + * out of IRAM), as opposed to 5 cycles per loop (plus wait states as they + * execute from flash) in TI's fw version. */ .text @@ -11,7 +18,6 @@ wait_ARM_cycles: cmp r0, #0 bxeq lr -1: sub r0, r0, #1 - cmp r0, #0 +1: subs r0, r0, #1 bne 1b bx lr