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

xiaoxiang781216 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 e3d2ce402fe arm: add arm_a_r dir
e3d2ce402fe is described below

commit e3d2ce402fe71075faa1773c3b7a5c2506c259bb
Author: hujun5 <[email protected]>
AuthorDate: Wed Nov 11 20:24:39 2026 +0800

    arm: add arm_a_r dir
    
    Prepare for the subsequent function merge of arm, armv7-a, armv7-r, and 
armv8-r
    
    Signed-off-by: hujun5 <[email protected]>
---
 arch/arm/src/CMakeLists.txt                        |  10 +-
 arch/arm/src/Makefile                              |   5 +
 arch/arm/src/arm/CMakeLists.txt                    |   4 -
 arch/arm/src/arm/Make.defs                         |   7 +-
 arch/arm/src/arm/arm_schedulesigaction.c           | 117 ---------------
 arch/arm/src/arm/arm_sigdeliver.c                  | 104 -------------
 arch/arm/src/{arm => arm_a_r}/CMakeLists.txt       |  30 +---
 arch/arm/src/{arm => arm_a_r}/Make.defs            |  24 +--
 .../{armv7-a => arm_a_r}/arm_schedulesigaction.c   |   2 +-
 arch/arm/src/{armv7-a => arm_a_r}/arm_sigdeliver.c |   2 +-
 arch/arm/src/armv7-a/CMakeLists.txt                |   4 -
 arch/arm/src/armv7-a/Make.defs                     |   7 +-
 arch/arm/src/armv7-r/CMakeLists.txt                |   4 -
 arch/arm/src/armv7-r/Make.defs                     |   7 +-
 arch/arm/src/armv7-r/arm_schedulesigaction.c       | 117 ---------------
 arch/arm/src/armv7-r/arm_sigdeliver.c              | 164 ---------------------
 arch/arm/src/armv8-r/CMakeLists.txt                |   4 -
 arch/arm/src/armv8-r/Make.defs                     |   7 +-
 arch/arm/src/armv8-r/arm_schedulesigaction.c       | 117 ---------------
 arch/arm/src/armv8-r/arm_sigdeliver.c              | 162 --------------------
 arch/arm/src/cmake/Toolchain.cmake                 |   5 +
 21 files changed, 37 insertions(+), 866 deletions(-)

diff --git a/arch/arm/src/CMakeLists.txt b/arch/arm/src/CMakeLists.txt
index 03c25bc556b..3ffe34a5a72 100644
--- a/arch/arm/src/CMakeLists.txt
+++ b/arch/arm/src/CMakeLists.txt
@@ -23,13 +23,17 @@
 add_subdirectory(${ARCH_SUBDIR})
 add_subdirectory(${NUTTX_CHIP_ABS_DIR} exclude_chip EXCLUDE_FROM_ALL)
 add_subdirectory(common)
+if(NOT ${ARCH_SUBDIR_ARM})
+  add_subdirectory(${ARCH_SUBDIR_ARM})
+endif()
 
 # Include directories (before system ones) as PUBLIC so that it can be exposed
 # to libboard
 target_include_directories(arch BEFORE PUBLIC ${NUTTX_CHIP_ABS_DIR} common
-                                              ${ARCH_SUBDIR})
+                                              ${ARCH_SUBDIR} 
${ARCH_SUBDIR_ARM})
 
 if(CONFIG_BUILD_PROTECTED)
-  target_include_directories(arch_interface BEFORE PUBLIC ${NUTTX_CHIP_ABS_DIR}
-                                                          common 
${ARCH_SUBDIR})
+  target_include_directories(
+    arch_interface BEFORE PUBLIC ${NUTTX_CHIP_ABS_DIR} common ${ARCH_SUBDIR}
+                                 ${ARCH_SUBDIR_ARM})
 endif()
diff --git a/arch/arm/src/Makefile b/arch/arm/src/Makefile
index 5bdff52c61c..f5f4597e579 100644
--- a/arch/arm/src/Makefile
+++ b/arch/arm/src/Makefile
@@ -34,10 +34,13 @@ endif
 
 ifeq ($(CONFIG_ARCH_ARMV7A),y)          # ARMv7-A
 ARCH_SUBDIR = armv7-a
+ARCH_SUBDIR_ARM = arm_a_r
 else ifeq ($(CONFIG_ARCH_ARMV7R),y)     # ARMv7-R
 ARCH_SUBDIR = armv7-r
+ARCH_SUBDIR_ARM = arm_a_r
 else ifeq ($(CONFIG_ARCH_ARMV8R),y)     # ARMv8-R
 ARCH_SUBDIR = armv8-r
+ARCH_SUBDIR_ARM = arm_a_r
 else ifeq ($(CONFIG_ARCH_ARMV7M),y)     # ARMv7-M
 ARCH_SUBDIR = armv7-m
 else ifeq ($(CONFIG_ARCH_ARMV8M),y)     # ARMv8-M
@@ -46,6 +49,7 @@ else ifeq ($(CONFIG_ARCH_ARMV6M),y)     # ARMv6-M
 ARCH_SUBDIR = armv6-m
 else                                    # ARM9, ARM7TDMI, etc.
 ARCH_SUBDIR = arm
+ARCH_SUBDIR_ARM = arm_a_r
 endif
 
 ARCH_SRCDIR = $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src
@@ -54,6 +58,7 @@ INCLUDES += ${INCDIR_PREFIX}$(ARCH_SRCDIR)$(DELIM)chip
 INCLUDES += ${INCDIR_PREFIX}$(ARCH_SRCDIR)$(DELIM)common
 INCLUDES += ${INCDIR_PREFIX}$(ARCH_SRCDIR)$(DELIM)$(ARCH_SUBDIR)
 INCLUDES += ${INCDIR_PREFIX}$(TOPDIR)$(DELIM)sched
+INCLUDES += ${INCDIR_PREFIX}$(ARCH_SRCDIR)$(DELIM)$(ARCH_SUBDIR_ARM)
 
 CPPFLAGS += $(INCLUDES)
 CFLAGS += $(INCLUDES)
diff --git a/arch/arm/src/arm/CMakeLists.txt b/arch/arm/src/arm/CMakeLists.txt
index 9822bef23be..13a91e8f7ef 100644
--- a/arch/arm/src/arm/CMakeLists.txt
+++ b/arch/arm/src/arm/CMakeLists.txt
@@ -37,10 +37,6 @@ list(
   arm_vectortab.S
   arm_saveusercontext.S)
 
-if(CONFIG_ENABLE_ALL_SIGNALS)
-  list(APPEND SRCS arm_schedulesigaction.c arm_sigdeliver.c)
-endif()
-
 if(CONFIG_PAGING)
   list(APPEND SRCS arm_pginitialize.c arm_checkmapping.c arm_allocpage.c
        arm_va2pte.c)
diff --git a/arch/arm/src/arm/Make.defs b/arch/arm/src/arm/Make.defs
index 43afb28c920..71d716ab379 100644
--- a/arch/arm/src/arm/Make.defs
+++ b/arch/arm/src/arm/Make.defs
@@ -23,6 +23,7 @@
 # Common ARM files
 
 include common/Make.defs
+include arm_a_r/Make.defs
 
 HEAD_ASRC  = arm_head.S
 
@@ -34,10 +35,8 @@ CMN_CSRCS += arm_undefinedinsn.c
 CMN_ASRCS += arm_cache.S arm_vectors.S arm_vectortab.S
 CMN_ASRCS += arm_saveusercontext.S
 
-ifeq ($(CONFIG_ENABLE_ALL_SIGNALS),y)
-CMN_CSRCS += arm_schedulesigaction.c arm_sigdeliver.c
-endif
-
 ifeq ($(CONFIG_LEGACY_PAGING),y)
   CMN_CSRCS += arm_pginitialize.c arm_checkmapping.c arm_allocpage.c 
arm_va2pte.c
 endif
+
+VPATH += arm_a_r
diff --git a/arch/arm/src/arm/arm_schedulesigaction.c 
b/arch/arm/src/arm/arm_schedulesigaction.c
deleted file mode 100644
index 64948790833..00000000000
--- a/arch/arm/src/arm/arm_schedulesigaction.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
- * arch/arm/src/arm/arm_schedulesigaction.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <sched.h>
-
-#include <nuttx/debug.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-
-#include "arm.h"
-#include "sched/sched.h"
-#include "arm_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_schedule_sigaction
- *
- * Description:
- *   This function is called by the OS when one or more
- *   signal handling actions have been queued for execution.
- *   The architecture specific code must configure things so
- *   that the 'sigdeliver' callback is executed on the thread
- *   specified by 'tcb' as soon as possible.
- *
- *   This function may be called from interrupt handling logic.
- *
- *   This operation should not cause the task to be unblocked
- *   nor should it cause any immediate execution of sigdeliver.
- *   Typically, a few cases need to be considered:
- *
- *   (1) This function may be called from an interrupt handler
- *       During interrupt processing, all xcptcontext structures
- *       should be valid for all tasks.  That structure should
- *       be modified to invoke sigdeliver() either on return
- *       from (this) interrupt or on some subsequent context
- *       switch to the recipient task.
- *   (2) If not in an interrupt handler and the tcb is NOT
- *       the currently executing task, then again just modify
- *       the saved xcptcontext structure for the recipient
- *       task so it will invoke sigdeliver when that task is
- *       later resumed.
- *   (3) If not in an interrupt handler and the tcb IS the
- *       currently executing task -- just call the signal
- *       handler now.
- *
- * Assumptions:
- *   Called from critical section
- *
- ****************************************************************************/
-
-void up_schedule_sigaction(struct tcb_s *tcb)
-{
-  sinfo("tcb=%p, rtcb=%p current_regs=%p\n", tcb, this_task(),
-        this_task()->xcp.regs);
-
-  /* Save the return lr and cpsr and one scratch register
-   * These will be restored by the signal trampoline after
-   * the signals have been delivered.
-   */
-
-  /* Save the current register context location */
-
-  tcb->xcp.saved_regs      = tcb->xcp.regs;
-
-  /* Duplicate the register context.  These will be
-   * restored by the signal trampoline after the signal has been
-   * delivered.
-   */
-
-  tcb->xcp.regs            = (void *)
-                             ((uint32_t)tcb->xcp.regs -
-                                        XCPTCONTEXT_SIZE);
-  memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE);
-
-  tcb->xcp.regs[REG_SP]    = (uint32_t)tcb->xcp.regs +
-                                       XCPTCONTEXT_SIZE;
-
-  /* Then set up to vector to the trampoline with interrupts
-   * disabled
-   */
-
-  tcb->xcp.regs[REG_LR]    = 0; /* Avoid backtracing back. */
-  tcb->xcp.regs[REG_PC]    = (uint32_t)arm_sigdeliver;
-  tcb->xcp.regs[REG_CPSR]  = PSR_MODE_SYS | PSR_I_BIT | PSR_F_BIT;
-#ifdef CONFIG_ARM_THUMB
-  tcb->xcp.regs[REG_CPSR] |= PSR_T_BIT;
-#endif
-}
diff --git a/arch/arm/src/arm/arm_sigdeliver.c 
b/arch/arm/src/arm/arm_sigdeliver.c
deleted file mode 100644
index ff1a9ac685e..00000000000
--- a/arch/arm/src/arm/arm_sigdeliver.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
- * arch/arm/src/arm/arm_sigdeliver.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <sched.h>
-#include <assert.h>
-
-#include <nuttx/debug.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <nuttx/board.h>
-#include <arch/board/board.h>
-
-#include "sched/sched.h"
-#include "arm_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: arm_sigdeliver
- *
- * Description:
- *   This is the a signal handling trampoline.  When a signal action was
- *   posted.  The task context was mucked with and forced to branch to this
- *   location with interrupts disabled.
- *
- ****************************************************************************/
-
-void arm_sigdeliver(void)
-{
-  struct tcb_s *rtcb = this_task();
-
-  board_autoled_on(LED_SIGNAL);
-
-  sinfo("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
-        rtcb, rtcb->sigdeliver, rtcb->sigpendactionq.head);
-  DEBUGASSERT(rtcb->sigdeliver != NULL);
-
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
-  /* Then make sure that interrupts are enabled.  Signal handlers must always
-   * run with interrupts enabled.
-   */
-
-  up_irq_enable();
-#endif
-
-  /* Deliver the signal */
-
-  (rtcb->sigdeliver)(rtcb);
-
-  /* Output any debug messages BEFORE restoring errno (because they may
-   * alter errno), then disable interrupts again and restore the original
-   * errno that is needed by the user logic (it is probably EINTR).
-   */
-
-  sinfo("Resuming\n");
-  up_irq_save();
-
-  /* Modify the saved return state with the actual saved values in the
-   * TCB.  This depends on the fact that nested signal handling is
-   * not supported.  Therefore, these values will persist throughout the
-   * signal handling action.
-   *
-   * Keeping this data in the TCB resolves a security problem in protected
-   * and kernel mode:  The regs[] array is visible on the user stack and
-   * could be modified by a hostile program.
-   */
-
-  rtcb->sigdeliver = NULL;  /* Allows next handler to be scheduled */
-
-  /* Then restore the correct state for this thread of execution. */
-
-  board_autoled_off(LED_SIGNAL);
-
-  rtcb->xcp.regs = rtcb->xcp.saved_regs;
-  arm_fullcontextrestore();
-}
diff --git a/arch/arm/src/arm/CMakeLists.txt 
b/arch/arm/src/arm_a_r/CMakeLists.txt
similarity index 63%
copy from arch/arm/src/arm/CMakeLists.txt
copy to arch/arm/src/arm_a_r/CMakeLists.txt
index 9822bef23be..83fad73727e 100644
--- a/arch/arm/src/arm/CMakeLists.txt
+++ b/arch/arm/src/arm_a_r/CMakeLists.txt
@@ -1,7 +1,5 @@
 # 
##############################################################################
-# arch/arm/src/arm/CMakeLists.txt
-#
-# SPDX-License-Identifier: Apache-2.0
+# arch/arm/src/arm_a_r/CMakeLists.txt
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more 
contributor
 # license agreements.  See the NOTICE file distributed with this work for
@@ -20,30 +18,8 @@
 #
 # 
##############################################################################
 
-target_sources(nuttx PRIVATE arm_head.S)
-
-list(
-  APPEND
-  SRCS
-  arm_dataabort.c
-  arm_doirq.c
-  arm_initialstate.c
-  arm_prefetchabort.c
-  arm_syscall.c
-  arm_tcbinfo.c
-  arm_undefinedinsn.c
-  arm_cache.S
-  arm_vectors.S
-  arm_vectortab.S
-  arm_saveusercontext.S)
-
 if(CONFIG_ENABLE_ALL_SIGNALS)
-  list(APPEND SRCS arm_schedulesigaction.c arm_sigdeliver.c)
-endif()
-
-if(CONFIG_PAGING)
-  list(APPEND SRCS arm_pginitialize.c arm_checkmapping.c arm_allocpage.c
-       arm_va2pte.c)
+  set(CSRCS arm_schedulesigaction.c arm_sigdeliver.c)
 endif()
 
-target_sources(arch PRIVATE ${SRCS})
+target_sources(arch PRIVATE ${CSRCS})
diff --git a/arch/arm/src/arm/Make.defs b/arch/arm/src/arm_a_r/Make.defs
similarity index 63%
copy from arch/arm/src/arm/Make.defs
copy to arch/arm/src/arm_a_r/Make.defs
index 43afb28c920..a2ce87f2acf 100644
--- a/arch/arm/src/arm/Make.defs
+++ b/arch/arm/src/arm_a_r/Make.defs
@@ -1,7 +1,5 @@
 ############################################################################
-# arch/arm/src/arm/Make.defs
-#
-# SPDX-License-Identifier: Apache-2.0
+# arch/arm/src/arm_a_r/Make.defs
 #
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
@@ -20,24 +18,8 @@
 #
 ############################################################################
 
-# Common ARM files
-
-include common/Make.defs
-
-HEAD_ASRC  = arm_head.S
-
-CMN_CSRCS += arm_dataabort.c arm_doirq.c arm_initialstate.c
-CMN_CSRCS += arm_prefetchabort.c
-CMN_CSRCS += arm_syscall.c arm_tcbinfo.c
-CMN_CSRCS += arm_undefinedinsn.c
-
-CMN_ASRCS += arm_cache.S arm_vectors.S arm_vectortab.S
-CMN_ASRCS += arm_saveusercontext.S
+# Common ARM_A_R files
 
 ifeq ($(CONFIG_ENABLE_ALL_SIGNALS),y)
-CMN_CSRCS += arm_schedulesigaction.c arm_sigdeliver.c
-endif
-
-ifeq ($(CONFIG_LEGACY_PAGING),y)
-  CMN_CSRCS += arm_pginitialize.c arm_checkmapping.c arm_allocpage.c 
arm_va2pte.c
+  CMN_CSRCS += arm_schedulesigaction.c arm_sigdeliver.c
 endif
diff --git a/arch/arm/src/armv7-a/arm_schedulesigaction.c 
b/arch/arm/src/arm_a_r/arm_schedulesigaction.c
similarity index 98%
rename from arch/arm/src/armv7-a/arm_schedulesigaction.c
rename to arch/arm/src/arm_a_r/arm_schedulesigaction.c
index d36ab2f89a9..905bb940c84 100644
--- a/arch/arm/src/armv7-a/arm_schedulesigaction.c
+++ b/arch/arm/src/arm_a_r/arm_schedulesigaction.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/arm/src/armv7-a/arm_schedulesigaction.c
+ * arch/arm/src/arm_a_r/arm_schedulesigaction.c
  *
  * SPDX-License-Identifier: Apache-2.0
  *
diff --git a/arch/arm/src/armv7-a/arm_sigdeliver.c 
b/arch/arm/src/arm_a_r/arm_sigdeliver.c
similarity index 99%
rename from arch/arm/src/armv7-a/arm_sigdeliver.c
rename to arch/arm/src/arm_a_r/arm_sigdeliver.c
index f5dec6ff9fa..da4348cf0e2 100644
--- a/arch/arm/src/armv7-a/arm_sigdeliver.c
+++ b/arch/arm/src/arm_a_r/arm_sigdeliver.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * arch/arm/src/armv7-a/arm_sigdeliver.c
+ * arch/arm/src/arm_a_r/arm_sigdeliver.c
  *
  * SPDX-License-Identifier: Apache-2.0
  *
diff --git a/arch/arm/src/armv7-a/CMakeLists.txt 
b/arch/arm/src/armv7-a/CMakeLists.txt
index b96cd738499..d9d9ffccd7c 100644
--- a/arch/arm/src/armv7-a/CMakeLists.txt
+++ b/arch/arm/src/armv7-a/CMakeLists.txt
@@ -50,10 +50,6 @@ list(
   arm_perf.c
   cp15_cacheops.c)
 
-if(CONFIG_ENABLE_ALL_SIGNALS)
-  list(APPEND SRCS arm_schedulesigaction.c arm_sigdeliver.c)
-endif()
-
 if(CONFIG_ARMV7A_GICv2M)
   list(APPEND SRCS arm_gicv2m.c)
 endif()
diff --git a/arch/arm/src/armv7-a/Make.defs b/arch/arm/src/armv7-a/Make.defs
index 4bcc3938d43..8509c9d56a6 100644
--- a/arch/arm/src/armv7-a/Make.defs
+++ b/arch/arm/src/armv7-a/Make.defs
@@ -23,6 +23,7 @@
 # Common ARM files
 
 include common/Make.defs
+include arm_a_r/Make.defs
 
 # The vector table is the "head" object, i.e., the one that must forced into
 # the link in order to draw in all of the other components
@@ -41,10 +42,6 @@ CMN_CSRCS += arm_initialstate.c arm_mmu.c arm_prefetchabort.c
 CMN_CSRCS += arm_syscall.c arm_tcbinfo.c arm_undefinedinsn.c
 CMN_CSRCS += arm_perf.c arm_userfault.c cp15_cacheops.c
 
-ifeq ($(CONFIG_ENABLE_ALL_SIGNALS),y)
-CMN_CSRCS += arm_schedulesigaction.c arm_sigdeliver.c
-endif
-
 ifeq ($(CONFIG_ARMV7A_GICv2M),y)
   CMN_CSRCS += arm_gicv2m.c
 endif
@@ -108,3 +105,5 @@ endif
 ifeq ($(CONFIG_ARCH_HIPRI_INTERRUPT),y)
   CMN_CSRCS += arm_dofiq.c
 endif
+
+VPATH += arm_a_r
diff --git a/arch/arm/src/armv7-r/CMakeLists.txt 
b/arch/arm/src/armv7-r/CMakeLists.txt
index a156a9847c3..2d836f219ae 100644
--- a/arch/arm/src/armv7-r/CMakeLists.txt
+++ b/arch/arm/src/armv7-r/CMakeLists.txt
@@ -45,10 +45,6 @@ list(
   arm_perf.c
   cp15_cacheops.c)
 
-if(CONFIG_ENABLE_ALL_SIGNALS)
-  list(APPEND SRCS arm_schedulesigaction.c arm_sigdeliver.c)
-endif()
-
 if(NOT CONFIG_ARCH_CHIP STREQUAL tms570)
   list(APPEND SRCS arm_gicv2.c arm_gicv2_dump.c)
 endif()
diff --git a/arch/arm/src/armv7-r/Make.defs b/arch/arm/src/armv7-r/Make.defs
index cd367e83100..e936237cb36 100644
--- a/arch/arm/src/armv7-r/Make.defs
+++ b/arch/arm/src/armv7-r/Make.defs
@@ -23,6 +23,7 @@
 # Common ARM files
 
 include common/Make.defs
+include arm_a_r/Make.defs
 
 # The vector table is the "head" object, i.e., the one that must forced into
 # the link in order to draw in all of the other components
@@ -41,10 +42,6 @@ CMN_CSRCS += arm_perf.c cp15_cacheops.c
 
 CMN_ASRCS += arm_head.S arm_vectors.S arm_saveusercontext.S
 
-ifeq ($(CONFIG_ENABLE_ALL_SIGNALS),y)
-CMN_CSRCS += arm_schedulesigaction.c arm_sigdeliver.c
-endif
-
 ifeq ($(CONFIG_ARMV7R_HAVE_PTM),y)
   CMN_CSRCS += arm_timer.c
 endif
@@ -73,3 +70,5 @@ ifeq ($(CONFIG_ARCH_HAVE_PERF_EVENTS_USER_ACCESS),y)
     CMN_UCSRCS += arm_perf.c
   endif
 endif
+
+VPATH += arm_a_r
\ No newline at end of file
diff --git a/arch/arm/src/armv7-r/arm_schedulesigaction.c 
b/arch/arm/src/armv7-r/arm_schedulesigaction.c
deleted file mode 100644
index 304a5030b54..00000000000
--- a/arch/arm/src/armv7-r/arm_schedulesigaction.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
- * arch/arm/src/armv7-r/arm_schedulesigaction.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <sched.h>
-
-#include <nuttx/debug.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-
-#include "arm.h"
-#include "sched/sched.h"
-#include "arm_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_schedule_sigaction
- *
- * Description:
- *   This function is called by the OS when one or more
- *   signal handling actions have been queued for execution.
- *   The architecture specific code must configure things so
- *   that the 'sigdeliver' callback is executed on the thread
- *   specified by 'tcb' as soon as possible.
- *
- *   This function may be called from interrupt handling logic.
- *
- *   This operation should not cause the task to be unblocked
- *   nor should it cause any immediate execution of sigdeliver.
- *   Typically, a few cases need to be considered:
- *
- *   (1) This function may be called from an interrupt handler
- *       During interrupt processing, all xcptcontext structures
- *       should be valid for all tasks.  That structure should
- *       be modified to invoke sigdeliver() either on return
- *       from (this) interrupt or on some subsequent context
- *       switch to the recipient task.
- *   (2) If not in an interrupt handler and the tcb is NOT
- *       the currently executing task, then again just modify
- *       the saved xcptcontext structure for the recipient
- *       task so it will invoke sigdeliver when that task is
- *       later resumed.
- *   (3) If not in an interrupt handler and the tcb IS the
- *       currently executing task -- just call the signal
- *       handler now.
- *
- * Assumptions:
- *   Called from critical section
- *
- ****************************************************************************/
-
-void up_schedule_sigaction(struct tcb_s *tcb)
-{
-  sinfo("tcb=%p, rtcb=%p current_regs=%p\n", tcb, this_task(),
-        this_task()->xcp.regs);
-
-  /* Save the return lr and cpsr and one scratch register.  These
-   * will be restored by the signal trampoline after the signals
-   * have been delivered.
-   */
-
-  /* Save the current register context location */
-
-  tcb->xcp.saved_regs      = tcb->xcp.regs;
-
-  /* Duplicate the register context.  These will be
-   * restored by the signal trampoline after the signal has been
-   * delivered.
-   */
-
-  tcb->xcp.regs            = (void *)
-                             ((uint32_t)tcb->xcp.regs -
-                                        XCPTCONTEXT_SIZE);
-  memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE);
-
-  tcb->xcp.regs[REG_SP]    = (uint32_t)tcb->xcp.regs +
-                                       XCPTCONTEXT_SIZE;
-
-  /* Then set up to vector to the trampoline with interrupts
-   * disabled
-   */
-
-  tcb->xcp.regs[REG_LR]    = 0; /* Avoid backtracing back. */
-  tcb->xcp.regs[REG_PC]    = (uint32_t)arm_sigdeliver;
-  tcb->xcp.regs[REG_CPSR]  = (PSR_MODE_SYS | PSR_I_BIT | PSR_F_BIT);
-#ifdef CONFIG_ARM_THUMB
-  tcb->xcp.regs[REG_CPSR] |= PSR_T_BIT;
-#endif
-}
diff --git a/arch/arm/src/armv7-r/arm_sigdeliver.c 
b/arch/arm/src/armv7-r/arm_sigdeliver.c
deleted file mode 100644
index b799dac8f11..00000000000
--- a/arch/arm/src/armv7-r/arm_sigdeliver.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/****************************************************************************
- * arch/arm/src/armv7-r/arm_sigdeliver.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <sched.h>
-#include <assert.h>
-
-#include <nuttx/debug.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <nuttx/board.h>
-#include <arch/board/board.h>
-
-#include "sched/sched.h"
-#include "arm_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: arm_sigdeliver
- *
- * Description:
- *   This is the a signal handling trampoline.  When a signal action was
- *   posted.  The task context was mucked with and forced to branch to this
- *   location with interrupts disabled.
- *
- ****************************************************************************/
-
-void arm_sigdeliver(void)
-{
-  struct tcb_s *rtcb = this_task();
-  uint32_t *regs = rtcb->xcp.saved_regs;
-
-#ifdef CONFIG_SMP
-  /* In the SMP case, we must terminate the critical section while the signal
-   * handler executes, but we also need to restore the irqcount when the
-   * we resume the main thread of the task.
-   */
-
-  int16_t saved_irqcount;
-#endif
-
-  board_autoled_on(LED_SIGNAL);
-
-  sinfo("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
-        rtcb, rtcb->sigdeliver, rtcb->sigpendactionq.head);
-  DEBUGASSERT(rtcb->sigdeliver != NULL);
-
-retry:
-#ifdef CONFIG_SMP
-  /* In the SMP case, up_schedule_sigaction(0) will have incremented
-   * 'irqcount' in order to force us into a critical section.  Save the
-   * pre-incremented irqcount.
-   */
-
-  saved_irqcount = rtcb->irqcount;
-  DEBUGASSERT(saved_irqcount >= 0);
-
-  /* Now we need call leave_critical_section() repeatedly to get the irqcount
-   * to zero, freeing all global spinlocks that enforce the critical section.
-   */
-
-  while (rtcb->irqcount > 0)
-    {
-      leave_critical_section(regs[REG_CPSR]);
-    }
-#endif /* CONFIG_SMP */
-
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
-  /* Then make sure that interrupts are enabled.  Signal handlers must always
-   * run with interrupts enabled.
-   */
-
-  up_irq_enable();
-#endif
-
-  /* Deliver the signal */
-
-  (rtcb->sigdeliver)(rtcb);
-
-  /* Output any debug messages BEFORE restoring errno (because they may
-   * alter errno), then disable interrupts again and restore the original
-   * errno that is needed by the user logic (it is probably EINTR).
-   */
-
-  sinfo("Resuming\n");
-
-#ifdef CONFIG_SMP
-  /* Restore the saved 'irqcount' and recover the critical section
-   * spinlocks.
-   */
-
-  DEBUGASSERT(rtcb->irqcount == 0);
-  while (rtcb->irqcount < saved_irqcount + 1)
-    {
-      enter_critical_section();
-    }
-#endif
-
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
-  up_irq_save();
-#endif
-
-  if (!sq_empty(&rtcb->sigpendactionq) &&
-      (rtcb->flags & TCB_FLAG_SIGNAL_ACTION) == 0)
-    {
-#ifdef CONFIG_SMP
-      leave_critical_section(regs[REG_CPSR]);
-#endif
-      goto retry;
-    }
-
-  /* Modify the saved return state with the actual saved values in the
-   * TCB.  This depends on the fact that nested signal handling is
-   * not supported.  Therefore, these values will persist throughout the
-   * signal handling action.
-   *
-   * Keeping this data in the TCB resolves a security problem in protected
-   * and kernel mode:  The regs[] array is visible on the user stack and
-   * could be modified by a hostile program.
-   */
-
-  rtcb->sigdeliver = NULL;  /* Allows next handler to be scheduled */
-
-  /* Then restore the correct state for this thread of execution. */
-
-  board_autoled_off(LED_SIGNAL);
-#ifdef CONFIG_SMP
-  /* We need to keep the IRQ lock until task switching */
-
-  leave_critical_section(up_irq_save());
-#endif
-
-  rtcb->xcp.regs = rtcb->xcp.saved_regs;
-  arm_fullcontextrestore();
-  UNUSED(regs);
-}
diff --git a/arch/arm/src/armv8-r/CMakeLists.txt 
b/arch/arm/src/armv8-r/CMakeLists.txt
index 0e3fca45c0b..b6108a7e45d 100644
--- a/arch/arm/src/armv8-r/CMakeLists.txt
+++ b/arch/arm/src/armv8-r/CMakeLists.txt
@@ -47,10 +47,6 @@ list(
   arm_perf.c
   cp15_cacheops.c)
 
-if(CONFIG_ENABLE_ALL_SIGNALS)
-  list(APPEND SRCS arm_schedulesigaction.c arm_sigdeliver.c)
-endif()
-
 if(CONFIG_ARCH_FPU)
   list(APPEND SRCS arm_fpucmp.c arm_fpuconfig.S)
 endif()
diff --git a/arch/arm/src/armv8-r/Make.defs b/arch/arm/src/armv8-r/Make.defs
index e1086b8e785..4bd86a80be4 100644
--- a/arch/arm/src/armv8-r/Make.defs
+++ b/arch/arm/src/armv8-r/Make.defs
@@ -23,6 +23,7 @@
 # Common ARM files
 
 include common/Make.defs
+include arm_a_r/Make.defs
 
 # The vector table is the "head" object, i.e., the one that must forced into
 # the link in order to draw in all of the other components
@@ -37,10 +38,6 @@ CMN_CSRCS += arm_initialstate.c arm_prefetchabort.c
 CMN_CSRCS += arm_syscall.c arm_tcbinfo.c arm_undefinedinsn.c
 CMN_CSRCS += arm_perf.c cp15_cacheops.c
 
-ifeq ($(CONFIG_ENABLE_ALL_SIGNALS),y)
-CMN_CSRCS += arm_schedulesigaction.c arm_sigdeliver.c
-endif
-
 # Common C source files
 
 CMN_ASRCS += arm_head.S arm_vectors.S arm_saveusercontext.S
@@ -61,3 +58,5 @@ endif
 ifeq ($(CONFIG_ARCH_HIPRI_INTERRUPT),y)
   CMN_CSRCS += arm_dofiq.c
 endif
+
+VPATH += arm_a_r
\ No newline at end of file
diff --git a/arch/arm/src/armv8-r/arm_schedulesigaction.c 
b/arch/arm/src/armv8-r/arm_schedulesigaction.c
deleted file mode 100644
index 830a969b962..00000000000
--- a/arch/arm/src/armv8-r/arm_schedulesigaction.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
- * arch/arm/src/armv8-r/arm_schedulesigaction.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <sched.h>
-
-#include <nuttx/debug.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-
-#include "arm.h"
-#include "sched/sched.h"
-#include "arm_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_schedule_sigaction
- *
- * Description:
- *   This function is called by the OS when one or more
- *   signal handling actions have been queued for execution.
- *   The architecture specific code must configure things so
- *   that the 'sigdeliver' callback is executed on the thread
- *   specified by 'tcb' as soon as possible.
- *
- *   This function may be called from interrupt handling logic.
- *
- *   This operation should not cause the task to be unblocked
- *   nor should it cause any immediate execution of sigdeliver.
- *   Typically, a few cases need to be considered:
- *
- *   (1) This function may be called from an interrupt handler
- *       During interrupt processing, all xcptcontext structures
- *       should be valid for all tasks.  That structure should
- *       be modified to invoke sigdeliver() either on return
- *       from (this) interrupt or on some subsequent context
- *       switch to the recipient task.
- *   (2) If not in an interrupt handler and the tcb is NOT
- *       the currently executing task, then again just modify
- *       the saved xcptcontext structure for the recipient
- *       task so it will invoke sigdeliver when that task is
- *       later resumed.
- *   (3) If not in an interrupt handler and the tcb IS the
- *       currently executing task -- just call the signal
- *       handler now.
- *
- * Assumptions:
- *   Called from critical section
- *
- ****************************************************************************/
-
-void up_schedule_sigaction(struct tcb_s *tcb)
-{
-  sinfo("tcb=%p, rtcb=%p current_regs=%p\n", tcb, this_task(),
-        this_task()->xcp.regs);
-
-  /* Save the return lr and cpsr and one scratch register.  These
-   * will be restored by the signal trampoline after the signals
-   * have been delivered.
-   */
-
-  /* Save the current register context location */
-
-  tcb->xcp.saved_regs      = tcb->xcp.regs;
-
-  /* Duplicate the register context.  These will be
-   * restored by the signal trampoline after the signal has been
-   * delivered.
-   */
-
-  tcb->xcp.regs            = (void *)
-                             ((uint32_t)tcb->xcp.regs -
-                                        XCPTCONTEXT_SIZE);
-  memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE);
-
-  tcb->xcp.regs[REG_SP]    = (uint32_t)tcb->xcp.regs +
-                                       XCPTCONTEXT_SIZE;
-
-  /* Then set up to vector to the trampoline with interrupts
-   * disabled
-   */
-
-  tcb->xcp.regs[REG_LR]    = 0; /* Avoid backtracing back. */
-  tcb->xcp.regs[REG_PC]    = (uint32_t)arm_sigdeliver;
-  tcb->xcp.regs[REG_CPSR]  = (PSR_MODE_SYS | PSR_I_BIT | PSR_F_BIT);
-#ifdef CONFIG_ARM_THUMB
-  tcb->xcp.regs[REG_CPSR] |= PSR_T_BIT;
-#endif
-}
diff --git a/arch/arm/src/armv8-r/arm_sigdeliver.c 
b/arch/arm/src/armv8-r/arm_sigdeliver.c
deleted file mode 100644
index 2037aad8833..00000000000
--- a/arch/arm/src/armv8-r/arm_sigdeliver.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
- * arch/arm/src/armv8-r/arm_sigdeliver.c
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <stdint.h>
-#include <sched.h>
-#include <assert.h>
-
-#include <nuttx/debug.h>
-#include <nuttx/irq.h>
-#include <nuttx/arch.h>
-#include <nuttx/board.h>
-#include <arch/board/board.h>
-
-#include "sched/sched.h"
-#include "arm_internal.h"
-
-/****************************************************************************
- * Public Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: arm_sigdeliver
- *
- * Description:
- *   This is the a signal handling trampoline.  When a signal action was
- *   posted.  The task context was mucked with and forced to branch to this
- *   location with interrupts disabled.
- *
- ****************************************************************************/
-
-void arm_sigdeliver(void)
-{
-  struct tcb_s *rtcb = this_task();
-  uint32_t *regs = rtcb->xcp.saved_regs;
-
-#ifdef CONFIG_SMP
-  /* In the SMP case, we must terminate the critical section while the signal
-   * handler executes, but we also need to restore the irqcount when the
-   * we resume the main thread of the task.
-   */
-
-  int16_t saved_irqcount;
-#endif
-
-  board_autoled_on(LED_SIGNAL);
-
-  sinfo("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
-        rtcb, rtcb->sigdeliver, rtcb->sigpendactionq.head);
-  DEBUGASSERT(rtcb->sigdeliver != NULL);
-
-retry:
-#ifdef CONFIG_SMP
-  /* In the SMP case, up_schedule_sigaction(0) will have incremented
-   * 'irqcount' in order to force us into a critical section.  Save the
-   * pre-incremented irqcount.
-   */
-
-  saved_irqcount = rtcb->irqcount;
-  DEBUGASSERT(saved_irqcount >= 0);
-
-  /* Now we need call leave_critical_section() repeatedly to get the irqcount
-   * to zero, freeing all global spinlocks that enforce the critical section.
-   */
-
-  while (rtcb->irqcount > 0)
-    {
-      leave_critical_section(regs[REG_CPSR]);
-    }
-#endif /* CONFIG_SMP */
-
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
-  /* Then make sure that interrupts are enabled.  Signal handlers must always
-   * run with interrupts enabled.
-   */
-
-  up_irq_enable();
-#endif
-
-  /* Deliver the signal */
-
-  (rtcb->sigdeliver)(rtcb);
-
-  /* Output any debug messages BEFORE restoring errno (because they may
-   * alter errno), then disable interrupts again and restore the original
-   * errno that is needed by the user logic (it is probably EINTR).
-   */
-
-  sinfo("Resuming\n");
-
-#ifdef CONFIG_SMP
-  /* Restore the saved 'irqcount' and recover the critical section
-   * spinlocks.
-   */
-
-  DEBUGASSERT(rtcb->irqcount == 0);
-  while (rtcb->irqcount < saved_irqcount + 1)
-    {
-      enter_critical_section();
-    }
-#endif
-
-#ifndef CONFIG_SUPPRESS_INTERRUPTS
-  up_irq_save();
-#endif
-
-  if (!sq_empty(&rtcb->sigpendactionq) &&
-      (rtcb->flags & TCB_FLAG_SIGNAL_ACTION) == 0)
-    {
-#ifdef CONFIG_SMP
-      leave_critical_section(regs[REG_CPSR]);
-#endif
-      goto retry;
-    }
-
-  /* Modify the saved return state with the actual saved values in the
-   * TCB.  This depends on the fact that nested signal handling is
-   * not supported.  Therefore, these values will persist throughout the
-   * signal handling action.
-   *
-   * Keeping this data in the TCB resolves a security problem in protected
-   * and kernel mode:  The regs[] array is visible on the user stack and
-   * could be modified by a hostile program.
-   */
-
-  rtcb->sigdeliver = NULL;  /* Allows next handler to be scheduled */
-
-  /* Then restore the correct state for this thread of execution. */
-
-  board_autoled_off(LED_SIGNAL);
-#ifdef CONFIG_SMP
-  leave_critical_section(up_irq_save());
-#endif
-
-  rtcb->xcp.regs = rtcb->xcp.saved_regs;
-  arm_fullcontextrestore();
-  UNUSED(regs);
-}
diff --git a/arch/arm/src/cmake/Toolchain.cmake 
b/arch/arm/src/cmake/Toolchain.cmake
index f7c41692b48..82e85542bb3 100644
--- a/arch/arm/src/cmake/Toolchain.cmake
+++ b/arch/arm/src/cmake/Toolchain.cmake
@@ -26,13 +26,17 @@ set(CMAKE_SYSTEM_NAME Generic)
 set(CMAKE_SYSTEM_VERSION 1)
 
 set(ARCH_SUBDIR)
+set(ARCH_SUBDIR_ARM)
 
 if(CONFIG_ARCH_ARMV7A) # ARMv7-A
   set(ARCH_SUBDIR armv7-a)
+  set(ARCH_SUBDIR_ARM arm_a_r)
 elseif(CONFIG_ARCH_ARMV7R) # ARMv7-R
   set(ARCH_SUBDIR armv7-r)
+  set(ARCH_SUBDIR_ARM arm_a_r)
 elseif(CONFIG_ARCH_ARMV8R) # ARMv8-R
   set(ARCH_SUBDIR armv8-r)
+  set(ARCH_SUBDIR_ARM arm_a_r)
 elseif(CONFIG_ARCH_ARMV7M) # ARMv7-M
   set(ARCH_SUBDIR armv7-m)
 elseif(CONFIG_ARCH_ARMV8M) # ARMv8-M
@@ -41,6 +45,7 @@ elseif(CONFIG_ARCH_ARMV6M) # ARMv6-M
   set(ARCH_SUBDIR armv6-m)
 else() # ARM9, ARM7TDMI, etc.
   set(ARCH_SUBDIR arm)
+  set(ARCH_SUBDIR_ARM arm_a_r)
 endif()
 
 include(${CMAKE_CURRENT_LIST_DIR}/${ARCH_SUBDIR}.cmake)

Reply via email to