You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/10/24 16:52:06 UTC

[incubator-nuttx] branch master updated: arch/armv6-m: fix compile error on LLVM clang

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 09cc29af4d arch/armv6-m: fix compile error on LLVM clang
09cc29af4d is described below

commit 09cc29af4d5ece65663b2efae78881d177ee9976
Author: chao an <an...@xiaomi.com>
AuthorDate: Mon Oct 24 18:16:41 2022 +0800

    arch/armv6-m: fix compile error on LLVM clang
    
    armv6-m/arm_exception.S:139:2: error: invalid instruction, any one of the following would fix this:
     sub r1, #(4 * (10))
     ^
    armv6-m/arm_exception.S:139:2: note: instruction requires: thumb2
     sub r1, #(4 * (10))
     ^
    armv6-m/arm_exception.S:139:10: note: invalid operand for instruction
     sub r1, #(4 * (10))
             ^
    armv6-m/arm_exception.S:139:2: note: no flag-preserving variant of this instruction available
     sub r1, #(4 * (10))
     ^
    armv6-m/arm_exception.S:139:10: note: operand must be a register in range [r0, r7]
     sub r1, #(4 * (10))
             ^
    -----------------------------------------
    
    bringup.c:125:18: warning: variable 'ret' is uninitialized when used here [-Wuninitialized]
              return ret;
                     ^~~
    bringup.c:73:10: note: initialize the variable 'ret' to silence this warning
      int ret;
             ^
              = 0
    
    Signed-off-by: chao an <an...@xiaomi.com>
---
 arch/arm/src/armv6-m/arm_exception.S     | 15 ++++++++-------
 boards/arm/phy62xx/phy6222/src/bringup.c |  5 ++---
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/arch/arm/src/armv6-m/arm_exception.S b/arch/arm/src/armv6-m/arm_exception.S
index 224ecdd535..20f55a165e 100644
--- a/arch/arm/src/armv6-m/arm_exception.S
+++ b/arch/arm/src/armv6-m/arm_exception.S
@@ -104,6 +104,7 @@
 	.align	2
 	.code	16
 	.thumb_func
+	.syntax	unified
 	.type	exception_common, function
 exception_common:
 
@@ -136,8 +137,8 @@ exception_common:
 2:
 	/* Save SP, PRIMASK, and R4-R7 in the context array */
 
-	sub		r1, #SW_XCPT_SIZE			/* R1=Beginning of context array on the stack */
-	mov		r2, #XCPTCONTEXT_SIZE			/* R2=Size of the context array */
+	subs		r1, #SW_XCPT_SIZE			/* R1=Beginning of context array on the stack */
+	movs		r2, #XCPTCONTEXT_SIZE			/* R2=Size of the context array */
 	add		r2, r1					/* R2=MSP/PSP before the interrupt was taken */
 								/* (ignoring the xPSR[9] alignment bit) */
 	mrs		r3, primask				/* R3=Current PRIMASK setting */
@@ -181,7 +182,7 @@ exception_common:
 	 */
 
 	mov		r2, r1					/* Reserve signal context */
-	sub		r2, r2, #XCPTCONTEXT_SIZE
+	subs		r2, r2, #XCPTCONTEXT_SIZE
 	msr		msp, r2					/* We are using the main stack pointer */
 #endif
 
@@ -193,8 +194,8 @@ exception_common:
 
 	/* Recover R8-R11 and EXEC_RETURN (5 registers) */
 
-	mov		r2, #(4*REG_R8)				/* R2=Offset to R8 storage */
-	add		r1, r0, r2				/* R1=Address of R8 storage */
+	movs		r2, #(4*REG_R8)				/* R2=Offset to R8 storage */
+	adds		r1, r0, r2				/* R1=Address of R8 storage */
 #ifdef CONFIG_BUILD_PROTECTED
 	ldmia		r1!, {r2-r6}				/* Recover R8-R11 and R14 (5 registers)*/
 	mov		r8, r2					/* Move to position in high registers */
@@ -215,8 +216,8 @@ exception_common:
 	 */
 
 	ldmia		r0!, {r2-r7}				/* Recover R4-R7 + 2 temp values */
-	mov		r1, #HW_XCPT_SIZE			/* R1=Size of hardware-saved portion of the context array */
-	sub		r1, r2, r1				/* R1=Value of MSP/PSP on exception entry */
+	movs		r1, #HW_XCPT_SIZE			/* R1=Size of hardware-saved portion of the context array */
+	subs		r1, r2, r1				/* R1=Value of MSP/PSP on exception entry */
 
 	/* Restore the stack pointer.  The EXC_RETURN value tells us whether the
 	 * context is on the MSP or PSP.
diff --git a/boards/arm/phy62xx/phy6222/src/bringup.c b/boards/arm/phy62xx/phy6222/src/bringup.c
index d581f2e6e3..b315340533 100644
--- a/boards/arm/phy62xx/phy6222/src/bringup.c
+++ b/boards/arm/phy62xx/phy6222/src/bringup.c
@@ -70,7 +70,7 @@ extern int phyplus_timer_initialize(const char *devpath, int timer);
 
 int phy62xx_bringup(void)
 {
-  int ret;
+  int ret = OK;
 
 #ifdef CONFIG_FS_PROCFS
   /* Mount the procfs file system */
@@ -167,6 +167,5 @@ int phy62xx_bringup(void)
     }
 #endif
 
-  UNUSED(ret);
-  return OK;
+  return ret;
 }