forked from Imagelibrary/seL4
riscv: Move implementations into c file
Function implementations belong in source files, not header files.
This commit is contained in:
@@ -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 */
|
||||
|
||||
42
src/util.c
42
src/util.c
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user