diff options
| author | aozima <[email protected]> | 2017-08-23 16:13:51 +0800 |
|---|---|---|
| committer | aozima <[email protected]> | 2017-08-23 16:13:51 +0800 |
| commit | 9bbc4e5e6b6d5c6efe24484d9032a8b8da2f1920 (patch) | |
| tree | 5e988af98b55cb1847729bae16ff0ad35abe1bc3 /libcpu/arm/cortex-m3 | |
| parent | 1f45d8c723cf8fd91a2f0ac6fec5ac9789c4cf66 (diff) | |
update cortex-m libcpu: fixed compile error.
Diffstat (limited to 'libcpu/arm/cortex-m3')
| -rw-r--r-- | libcpu/arm/cortex-m3/cpuport.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libcpu/arm/cortex-m3/cpuport.c b/libcpu/arm/cortex-m3/cpuport.c index f938bab800..10989ffc5b 100644 --- a/libcpu/arm/cortex-m3/cpuport.c +++ b/libcpu/arm/cortex-m3/cpuport.c @@ -368,11 +368,12 @@ __asm int __rt_ffs(int value) { CMP r0, #0x00 BEQ exit + RBIT r0, r0 CLZ r0, r0 ADDS r0, r0, #0x01 - exit +exit BX lr } #elif defined(__IAR_SYSTEMS_ICC__) @@ -380,9 +381,11 @@ int __rt_ffs(int value) { if (value == 0) return value; - __ASM("RBIT r0, r0"); - __ASM("CLZ r0, r0"); - __ASM("ADDS r0, r0, #0x01"); + asm("RBIT %0, %1" : "=r"(value) : "r"(value)); + asm("CLZ %0, %1" : "=r"(value) : "r"(value)); + asm("ADDS %0, %1, #0x01" : "=r"(value) : "r"(value)); + + return value; } #elif defined(__GNUC__) int __rt_ffs(int value) |
