summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-09 16:37:32 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-07-09 16:42:00 +0200
commit4fe3ad2f99fc21db2f58c9bfb2a5e8cf5237cc63 (patch)
tree8178b465c1cf79e819bbb60cc12967da82a56f73
parentbsp/csb337: Use IRQ extensions API (diff)
downloadrtems-4fe3ad2f99fc21db2f58c9bfb2a5e8cf5237cc63.tar.bz2
bsps/powerpc: Add ppc_count_leading_zeros()
-rw-r--r--c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
index 79024ebaf2..71567d5814 100644
--- a/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
+++ b/c/src/lib/libcpu/powerpc/shared/include/powerpc-utility.h
@@ -407,6 +407,19 @@ static inline void ppc_external_exceptions_disable(uint32_t msr)
RTEMS_COMPILER_MEMORY_BARRIER();
}
+static inline uint32_t ppc_count_leading_zeros(uint32_t value)
+{
+ uint32_t count;
+
+ __asm__ (
+ "cntlzw %0, %1;"
+ : "=r" (count)
+ : "r" (value)
+ );
+
+ return count;
+}
+
/*
* Simple spin delay in microsecond units for device drivers.
* This is very dependent on the clock speed of the target.