Skip to content

Commit 4456beb

Browse files
committed
[FIXUP] __rt_clz loss in aarch64
Signed-off-by: GuEe-GUI <[email protected]>
1 parent 6541c98 commit 4456beb

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

Diff for: include/rtthread.h

+1
Original file line numberDiff line numberDiff line change
@@ -794,6 +794,7 @@ rt_device_t rt_console_get_device(void);
794794

795795
int __rt_ffs(int value);
796796
unsigned long __rt_ffsl(unsigned long value);
797+
unsigned long __rt_clz(unsigned long value);
797798

798799
void rt_show_version(void);
799800

Diff for: libcpu/aarch64/common/cpuport.c

+15
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,19 @@ unsigned long __rt_ffsl(unsigned long value)
5656
#endif
5757
}
5858

59+
unsigned long __rt_clz(unsigned long value)
60+
{
61+
#ifdef __GNUC__
62+
return __builtin_clz(value);
63+
#else
64+
unsigned long val;
65+
66+
__asm__ volatile ("clz %0, %1"
67+
:"=r"(val)
68+
:"r"(value));
69+
70+
return val;
71+
#endif
72+
}
73+
5974
#endif /* RT_USING_CPU_FFS */

0 commit comments

Comments
 (0)