From 228a6be077a2e2f40e9cbc6f23ed232a8371e7d0 Mon Sep 17 00:00:00 2001 From: Grissiom Date: Sat, 1 Jun 2013 02:16:10 +0800 Subject: [PATCH] cortex-r4: add __rt_ffs --- bsp/rm48x50/rtconfig.h | 1 + libcpu/arm/cortex-r4/cpu.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/bsp/rm48x50/rtconfig.h b/bsp/rm48x50/rtconfig.h index 86fc630c8..d681ef736 100644 --- a/bsp/rm48x50/rtconfig.h +++ b/bsp/rm48x50/rtconfig.h @@ -212,6 +212,7 @@ // #define RT_VFP_LAZY_STACKING +#define RT_USING_CPU_FFS // #endif diff --git a/libcpu/arm/cortex-r4/cpu.c b/libcpu/arm/cortex-r4/cpu.c index 569f7d0c2..3aa7cd35d 100644 --- a/libcpu/arm/cortex-r4/cpu.c +++ b/libcpu/arm/cortex-r4/cpu.c @@ -39,4 +39,17 @@ void rt_hw_cpu_shutdown() while (1); } +#ifdef RT_USING_CPU_FFS +int __rt_ffs(int value) +{ + if (value == 0) + return value; + + __asm(" rsb r1, r0, #0"); + __asm(" and r1, r1, r0"); + __asm(" clz r1, r1"); + __asm(" rsb r0, r1, #32"); +} +#endif + /*@}*/ -- GitLab