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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9e53aab5b3 xtensa/isa: fix build break if compiler without ISA - 
XCHAL_HAVE_THREADPTR support
9e53aab5b3 is described below

commit 9e53aab5b35167d7284cfcae951b8a300b7dfb06
Author: chao an <anchao.arc...@bytedance.com>
AuthorDate: Sat Jul 19 15:50:50 2025 +0800

    xtensa/isa: fix build break if compiler without ISA - XCHAL_HAVE_THREADPTR 
support
    
    common/xtensa_context.S: Assembler messages:
    common/xtensa_context.S:134: Error: invalid register number (231) for 'rur' 
instruction
    common/xtensa_context.S:283: Error: invalid register number (231) for 'wur' 
instruction
    clang-10: error: Xtensa-as command failed with exit code 1 (use -v to see 
invocation)
    make[1]: *** [Makefile:143: xtensa_context.o] Error 1
    make[1]: *** Waiting for unfinished jobs....
    
    Signed-off-by: chao an <anchao.arc...@bytedance.com>
---
 arch/xtensa/include/irq.h                       | 11 +++++++++--
 arch/xtensa/src/common/xtensa_context.S         |  4 ++++
 arch/xtensa/src/common/xtensa_saveusercontext.c |  2 ++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/arch/xtensa/include/irq.h b/arch/xtensa/include/irq.h
index 9bff4d0bd1..5dc3e54b6c 100644
--- a/arch/xtensa/include/irq.h
+++ b/arch/xtensa/include/irq.h
@@ -94,9 +94,16 @@
 #define REG_SAR             (18)
 #define REG_EXCCAUSE        (19)
 #define REG_EXCVADDR        (20)
-#define REG_THREADPTR       (21)
 
-#define _REG_EXTRA_START    (22)
+#ifdef CONFIG_SCHED_THREAD_LOCAL
+#  ifndef XCHAL_HAVE_THREADPTR || XCHAL_HAVE_THREADPTR == 0
+#    error architecture-specific TLS depends on ISA THREADPTR(Thread Porinter)
+#  endif
+#  define REG_THREADPTR     (21)
+#  define _REG_EXTRA_START  (22)
+#else
+#  define _REG_EXTRA_START  (21)
+#endif
 
 #if XCHAL_HAVE_S32C1I != 0
 #  define REG_SCOMPARE1       (_REG_EXTRA_START + 0)
diff --git a/arch/xtensa/src/common/xtensa_context.S 
b/arch/xtensa/src/common/xtensa_context.S
index dd9156e3c6..01ae6618a9 100644
--- a/arch/xtensa/src/common/xtensa_context.S
+++ b/arch/xtensa/src/common/xtensa_context.S
@@ -131,8 +131,10 @@ _xtensa_context_save:
        s32i    a15, sp, (4 * REG_A15)
 #endif
 
+#ifdef CONFIG_SCHED_THREAD_LOCAL
        rur     a3, THREADPTR
        s32i    a3, sp, (4 * REG_THREADPTR)
+#endif
 
        rsr             a3, SAR
        s32i    a3, sp, (4 * REG_SAR)
@@ -279,8 +281,10 @@ _xtensa_context_restore:
        wsr   a3, SCOMPARE1
 #endif
 
+#ifdef CONFIG_SCHED_THREAD_LOCAL
        l32i    a3, a2, (4 * REG_THREADPTR)
        wur             a3, THREADPTR
+#endif
 
        l32i    a3, a2, (4 * REG_SAR)
        wsr             a3, SAR
diff --git a/arch/xtensa/src/common/xtensa_saveusercontext.c 
b/arch/xtensa/src/common/xtensa_saveusercontext.c
index e877a65c53..29842c49ae 100644
--- a/arch/xtensa/src/common/xtensa_saveusercontext.c
+++ b/arch/xtensa/src/common/xtensa_saveusercontext.c
@@ -79,8 +79,10 @@ int up_saveusercontext(void *saveregs)
           "   s32i a14, %0, (4 * " STRINGIFY(REG_A14) ")\n"
           "   s32i a15, %0, (4 * " STRINGIFY(REG_A15) ")\n"
 #endif
+#ifdef CONFIG_SCHED_THREAD_LOCAL
           "   rur  a2, THREADPTR\n"
           "   s32i a2, %0, (4 * " STRINGIFY(THREADPTR) ")\n"
+#endif
           "   rsr  a2, SAR\n"
           "   s32i a2, %0, (4 * " STRINGIFY(REG_SAR) ")\n"
 #if XCHAL_HAVE_S32C1I != 0

Reply via email to