From 360d7e48ab2d3c205b74523a075d92cbe3e72a7b Mon Sep 17 00:00:00 2001 From: tangyuxin Date: Mon, 1 Feb 2021 21:01:14 +0800 Subject: [libcpu][cm33] 修复不同优化等级,函数行为不一致的问题 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libcpu/arm/cortex-m33/cpuport.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'libcpu') diff --git a/libcpu/arm/cortex-m33/cpuport.c b/libcpu/arm/cortex-m33/cpuport.c index 42b5798507..41325105d7 100644 --- a/libcpu/arm/cortex-m33/cpuport.c +++ b/libcpu/arm/cortex-m33/cpuport.c @@ -473,17 +473,13 @@ exit #elif defined(__CLANG_ARM) int __rt_ffs(int value) { - __asm volatile( - "CMP r0, #0x00 \n" - "BEQ 1f \n" + if (value == 0) return value; + __asm volatile( "RBIT r0, r0 \n" "CLZ r0, r0 \n" "ADDS r0, r0, #0x01 \n" - "1: \n" - "BX lr \n" - : "=r"(value) : "r"(value) ); -- cgit v1.3.1