Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: MAXREFDES131_Qt_Demo MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAXREFDES130_131_Demo ... more
Diff: OneWire_Masters/GPIO/owlink.s
- Revision:
- 46:afe466c96069
- Parent:
- 40:590791ecac1c
- Child:
- 52:4cba20c21941
--- a/OneWire_Masters/GPIO/owlink.s Wed Apr 06 09:10:22 2016 -0500 +++ b/OneWire_Masters/GPIO/owlink.s Wed Apr 06 10:06:06 2016 -0500 @@ -6,6 +6,27 @@ #define PROC_CYCLES_PER_LOOP (2 + PIPELINE_REFILL_PROC_CYCLES) #define LOOPS_PER_US (PROC_CLOCK_MHZ / PROC_CYCLES_PER_LOOP) // Number of loop passes for a 1 us delay #define LOOPS_REMOVED_TUNING (OVERHEAD_TUNING / PROC_CYCLES_PER_LOOP) + +// LABEL macro +#ifdef TOOLCHAIN_GCC_ARM +#define LABEL(x) x: +#else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD +#define LABEL(x) x +#endif + +// EXPORT_LABEL macro +#ifdef TOOLCHAIN_GCC_ARM +#define EXPORT_LABEL(x) .global x +#else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD +#define EXPORT_LABEL(x) EXPORT x +#endif + +// THUMB_FUNC macro +#ifdef TOOLCHAIN_GCC_ARM +#define THUMB_FUNC .thumb_func +#else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD +#define THUMB_FUNC +#endif #if defined TOOLCHAIN_IAR SECTION owlink : CODE @@ -17,31 +38,18 @@ #endif // void ow_usdelay(unsigned int time_us) -#ifdef TOOLCHAIN_GCC_ARM -.thumb_func - .global ow_usdelay -ow_usdelay: -#else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD - EXPORT ow_usdelay -ow_usdelay -#endif + THUMB_FUNC + EXPORT_LABEL(ow_usdelay) +LABEL(ow_usdelay) cmp R0, #0 // Return if time_us equals zero beq return mov R1, #LOOPS_PER_US mul R0, R0, R1 sub R0, R0, #LOOPS_REMOVED_TUNING -#ifdef TOOLCHAIN_GCC_ARM -loop: -#else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD -loop -#endif +LABEL(loop) subs R0, R0, #1 bne loop -#ifdef TOOLCHAIN_GCC_ARM -return: -#else // TOOLCHAIN_IAR or TOOLCHAIN_ARM_STD -return -#endif +LABEL(return) bx R14 #ifdef TOOLCHAIN_GCC_ARM