summaryrefslogtreecommitdiff
path: root/libcpu
diff options
context:
space:
mode:
authorGrissiom <[email protected]>2013-06-01 02:16:10 +0800
committerGrissiom <[email protected]>2013-06-05 23:20:39 +0800
commit228a6be077a2e2f40e9cbc6f23ed232a8371e7d0 (patch)
tree4dc12b455ecb2cc8f3448941d5f5aa2f39e77208 /libcpu
parent480ac3444510fc7303f738a81f64314557366b8d (diff)
cortex-r4: add __rt_ffs
Diffstat (limited to 'libcpu')
-rw-r--r--libcpu/arm/cortex-r4/cpu.c13
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
+
/*@}*/