riscv: Move implementations into c file

Function implementations belong in source files, not header files.
This commit is contained in:
Adrian Danis
2018-04-04 15:31:22 +10:00
committed by Anna Lyons
parent 69d0e8bfa6
commit 80303364e8
2 changed files with 46 additions and 39 deletions

View File

@@ -95,45 +95,10 @@ int __builtin_clzl (unsigned long x);
int __builtin_ctzl (unsigned long x);
#ifdef CONFIG_ARCH_RISCV
uint32_t __clzsi2(uint32_t x)
{
uint32_t count = 0;
while ( !(x & 0x80000000U) && count < 34) {
x <<= 1;
count++;
}
return count;
}
uint32_t __ctzsi2(uint32_t x)
{
uint32_t count = 0;
while ( !(x & 0x000000001) && count <= 32) {
x >>= 1;
count++;
}
return count;
}
uint32_t __clzdi2(uint64_t x)
{
uint32_t count = 0;
while ( !(x & 0x8000000000000000U) && count < 65) {
x <<= 1;
count++;
}
return count;
}
uint32_t __ctzdi2(uint64_t x)
{
uint32_t count = 0;
while ( !(x & 0x00000000000000001) && count <= 64) {
x >>= 1;
count++;
}
return count;
}
uint32_t __clzsi2(uint32_t x);
uint32_t __ctzsi2(uint32_t x);
uint32_t __clzdi2(uint64_t x);
uint32_t __ctzdi2(uint64_t x);
#endif
/** MODIFIES: */
/** DONT_TRANSLATE */

View File

@@ -141,3 +141,45 @@ str_to_long(const char* str)
return val;
}
#ifdef CONFIG_ARCH_RISCV
uint32_t __clzsi2(uint32_t x)
{
uint32_t count = 0;
while ( !(x & 0x80000000U) && count < 34) {
x <<= 1;
count++;
}
return count;
}
uint32_t __ctzsi2(uint32_t x)
{
uint32_t count = 0;
while ( !(x & 0x000000001) && count <= 32) {
x >>= 1;
count++;
}
return count;
}
uint32_t __clzdi2(uint64_t x)
{
uint32_t count = 0;
while ( !(x & 0x8000000000000000U) && count < 65) {
x <<= 1;
count++;
}
return count;
}
uint32_t __ctzdi2(uint64_t x)
{
uint32_t count = 0;
while ( !(x & 0x00000000000000001) && count <= 64) {
x >>= 1;
count++;
}
return count;
}
#endif /* CONFIG_ARCH_RISCV */