[libcpu/arm]add __rt_ffs() for armclang in CORTEX M3/4/7

This commit is contained in:
yangjie
2019-07-03 18:47:11 +08:00
parent c578016f92
commit 31ffc4582c
3 changed files with 62 additions and 2 deletions
+20
View File
@@ -11,6 +11,7 @@
* 2012-12-23 aozima stack addr align to 8byte.
* 2012-12-29 Bernard Add exception hook.
* 2013-07-09 aozima enhancement hard fault exception handler.
* 2019-07-03 yangjie add __rt_ffs() for armclang.
*/
#include <rtthread.h>
@@ -382,6 +383,25 @@ __asm int __rt_ffs(int value)
exit
BX lr
}
#elif defined(__CLANG_ARM)
int __rt_ffs(int value)
{
__asm volatile(
"CMP r0, #0x00 \n"
"BEQ exit \n"
"RBIT r0, r0 \n"
"CLZ r0, r0 \n"
"ADDS r0, r0, #0x01 \n"
"exit: \n"
"BX lr \n"
: "=r"(value)
: "r"(value)
);
return value;
}
#elif defined(__IAR_SYSTEMS_ICC__)
int __rt_ffs(int value)
{