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/03/30 03:19:41 UTC
[incubator-nuttx] 01/08: xtensa: Move XCHAL_SWINT_CALL definition into syscall header
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
commit 7926bce26b125f460857b562ae03e30f91b1878c
Author: Gustavo Henrique Nihei <gu...@espressif.com>
AuthorDate: Thu Mar 24 18:12:55 2022 -0300
xtensa: Move XCHAL_SWINT_CALL definition into syscall header
This is required to avoid the interface header (syscall.h) depending on
the xtensa_swi.h header from the implementation
Signed-off-by: Gustavo Henrique Nihei <gu...@espressif.com>
---
arch/xtensa/include/syscall.h | 41 ++++++++++++++++++-
arch/xtensa/src/common/xtensa_context.S | 1 -
arch/xtensa/src/common/xtensa_swi.h | 72 ---------------------------------
3 files changed, 40 insertions(+), 74 deletions(-)
diff --git a/arch/xtensa/include/syscall.h b/arch/xtensa/include/syscall.h
index e2a3285..2e96162 100644
--- a/arch/xtensa/include/syscall.h
+++ b/arch/xtensa/include/syscall.h
@@ -30,6 +30,7 @@
****************************************************************************/
#include <nuttx/config.h>
+
#ifndef __ASSEMBLY__
# include <stdint.h>
#endif
@@ -37,12 +38,50 @@
# include <syscall.h>
#endif
-#include "xtensa_swi.h"
+#include <arch/xtensa/core.h>
+#include <arch/xtensa/xtensa_corebits.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
+/* Select software interrupt number for context-switch.
+ * The SW interrupt level must be greater than XCHAL_SYSCALL_LEVEL
+ * and less than XCHAL_EXCM_LEVEL.
+ * So that we can generate an interrupt when up_irq_save is called.
+ * and not generate interrupt when up_irq_disable is called.
+ * Return an error if no suitable software interrupt was found.
+ */
+
+#ifndef XTENSA_SWINT
+# ifdef XCHAL_SOFTWARE2_INTERRUPT
+# if XCHAL_INT_LEVEL(XCHAL_SOFTWARE2_INTERRUPT) > XCHAL_SYSCALL_LEVEL && \
+ XCHAL_INT_LEVEL(XCHAL_SOFTWARE2_INTERRUPT) <= XCHAL_EXCM_LEVEL
+# undef XTENSA_SWINT
+# define XTENSA_SWINT XCHAL_SOFTWARE2_INTERRUPT
+# endif
+# endif
+# ifdef XCHAL_SOFTWARE1_INTERRUPT
+# if XCHAL_INT_LEVEL(XCHAL_SOFTWARE1_INTERRUPT) > XCHAL_SYSCALL_LEVEL && \
+ XCHAL_INT_LEVEL(XCHAL_SOFTWARE1_INTERRUPT) <= XCHAL_EXCM_LEVEL
+# undef XTENSA_SWINT
+# define XTENSA_SWINT XCHAL_SOFTWARE1_INTERRUPT
+# endif
+# endif
+# ifdef XCHAL_SOFTWARE0_INTERRUPT
+# if XCHAL_INT_LEVEL(XCHAL_SOFTWARE0_INTERRUPT) > XCHAL_SYSCALL_LEVEL && \
+ XCHAL_INT_LEVEL(XCHAL_SOFTWARE0_INTERRUPT) <= XCHAL_EXCM_LEVEL
+# undef XTENSA_SWINT
+# define XTENSA_SWINT XCHAL_SOFTWARE0_INTERRUPT
+# endif
+# endif
+#endif
+#ifndef XTENSA_SWINT
+# error "There is no suitable sw interrupt in this Xtensa configuration."
+#endif
+
+#define XCHAL_SWINT_CALL (1 << XTENSA_SWINT)
+
#define SYS_syscall 0x00
/* This logic uses three system calls {0,1,2} for context switching and one
diff --git a/arch/xtensa/src/common/xtensa_context.S b/arch/xtensa/src/common/xtensa_context.S
index ec78a44..5395183 100644
--- a/arch/xtensa/src/common/xtensa_context.S
+++ b/arch/xtensa/src/common/xtensa_context.S
@@ -67,7 +67,6 @@
#include <arch/xtensa/xtensa_specregs.h>
#include "syscall.h"
-#include "xtensa_swi.h"
#include "xtensa_asm_utils.h"
/****************************************************************************
diff --git a/arch/xtensa/src/common/xtensa_swi.h b/arch/xtensa/src/common/xtensa_swi.h
deleted file mode 100644
index be73139..0000000
--- a/arch/xtensa/src/common/xtensa_swi.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
- * arch/xtensa/src/common/xtensa_swi.h
- *
- * 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.
- *
- ****************************************************************************/
-
-#ifndef __ARCH_XTENSA_SRC_COMMON_XTENSA_SWI_H
-#define __ARCH_XTENSA_SRC_COMMON_XTENSA_SWI_H
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <arch/xtensa/core.h>
-#include <arch/xtensa/xtensa_corebits.h>
-
-/****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
-
-/* Select software interrupt number for context-switch.
- * The SW interrupt level must be greater than XCHAL_SYSCALL_LEVEL
- * and less than XCHAL_EXCM_LEVEL.
- * So that we can generate an interrupt when up_irq_save is called.
- * and not generate interrupt when up_irq_disable is called.
- * Return an error if no suitable software interrupt was found.
- */
-
-#ifndef XTENSA_SWINT
-# ifdef XCHAL_SOFTWARE2_INTERRUPT
-# if XCHAL_INT_LEVEL(XCHAL_SOFTWARE2_INTERRUPT) > XCHAL_SYSCALL_LEVEL && \
- XCHAL_INT_LEVEL(XCHAL_SOFTWARE2_INTERRUPT) <= XCHAL_EXCM_LEVEL
-# undef XTENSA_SWINT
-# define XTENSA_SWINT XCHAL_SOFTWARE2_INTERRUPT
-# endif
-# endif
-# ifdef XCHAL_SOFTWARE1_INTERRUPT
-# if XCHAL_INT_LEVEL(XCHAL_SOFTWARE1_INTERRUPT) > XCHAL_SYSCALL_LEVEL && \
- XCHAL_INT_LEVEL(XCHAL_SOFTWARE1_INTERRUPT) <= XCHAL_EXCM_LEVEL
-# undef XTENSA_SWINT
-# define XTENSA_SWINT XCHAL_SOFTWARE1_INTERRUPT
-# endif
-# endif
-# ifdef XCHAL_SOFTWARE0_INTERRUPT
-# if XCHAL_INT_LEVEL(XCHAL_SOFTWARE0_INTERRUPT) > XCHAL_SYSCALL_LEVEL && \
- XCHAL_INT_LEVEL(XCHAL_SOFTWARE0_INTERRUPT) <= XCHAL_EXCM_LEVEL
-# undef XTENSA_SWINT
-# define XTENSA_SWINT XCHAL_SOFTWARE0_INTERRUPT
-# endif
-# endif
-#endif
-#ifndef XTENSA_SWINT
-# error "There is no suitable sw interrupt in this Xtensa configuration."
-#endif
-
-#define XCHAL_SWINT_CALL (1 << XTENSA_SWINT)
-
-#endif /* __ARCH_XTENSA_SRC_COMMON_XTENSA_SWI_H */