diff options
| author | Grissiom <[email protected]> | 2013-06-01 02:16:10 +0800 |
|---|---|---|
| committer | Grissiom <[email protected]> | 2013-06-05 23:20:39 +0800 |
| commit | 228a6be077a2e2f40e9cbc6f23ed232a8371e7d0 (patch) | |
| tree | 4dc12b455ecb2cc8f3448941d5f5aa2f39e77208 /libcpu | |
| parent | 480ac3444510fc7303f738a81f64314557366b8d (diff) | |
cortex-r4: add __rt_ffs
Diffstat (limited to 'libcpu')
| -rw-r--r-- | libcpu/arm/cortex-r4/cpu.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libcpu/arm/cortex-r4/cpu.c b/libcpu/arm/cortex-r4/cpu.c index 569f7d0c29..3aa7cd35de 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 + /*@}*/ |
