arch: Move [arm|xtensa]_intstack_[alloc|top] to common header file

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
Xiang Xiao 2022-03-12 00:16:27 +08:00 committed by Petro Karashchenko
parent 17d1a48fc9
commit 39fb09738d
22 changed files with 19 additions and 322 deletions

View File

@ -42,7 +42,6 @@
#include "arm_arch.h"
#include "arm_internal.h"
#include "chip.h"
/****************************************************************************
* Pre-processor Definitions

View File

@ -35,7 +35,6 @@
#include "sched/sched.h"
#include "arm_internal.h"
#include "chip.h"
#ifdef CONFIG_STACK_COLORATION

View File

@ -43,7 +43,6 @@
#include "arm_arch.h"
#include "arm_internal.h"
#include "chip.h"
/****************************************************************************
* Private Functions

View File

@ -69,12 +69,6 @@
# define USE_SERIALDRIVER 1
#endif
/* Check if an interrupt stack size is configured */
#ifndef CONFIG_ARCH_INTERRUPTSTACK
# define CONFIG_ARCH_INTERRUPTSTACK 0
#endif
/* For use with EABI and floating point, the stack must be aligned to 8-byte
* addresses.
*/
@ -87,6 +81,14 @@
#define STACK_ALIGN_DOWN(a) ((a) & ~STACK_ALIGN_MASK)
#define STACK_ALIGN_UP(a) (((a) + STACK_ALIGN_MASK) & ~STACK_ALIGN_MASK)
/* Check if an interrupt stack size is configured */
#ifndef CONFIG_ARCH_INTERRUPTSTACK
# define CONFIG_ARCH_INTERRUPTSTACK 0
#endif
#define INTSTACK_SIZE (CONFIG_ARCH_INTERRUPTSTACK & ~STACK_ALIGN_MASK)
/* Macros to handle saving and restoring interrupt state. In the current ARM
* model, the state is always copied to and from the stack and TCB. In the
* Cortex-M0/3 model, the state is copied from the stack to the TCB, but only
@ -329,6 +331,11 @@ void arm_pminitialize(void);
/* Interrupt handling *******************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7
uintptr_t arm_intstack_alloc(void);
uintptr_t arm_intstack_top(void);
#endif
/* Exception handling logic unique to the Cortex-M family */
#if defined(CONFIG_ARCH_ARMV6M) || defined(CONFIG_ARCH_ARMV7M) || \

View File

@ -41,7 +41,6 @@
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7
# include "cxd56_cpuindex.h"
# include "cxd56_irq.h"
#endif
/****************************************************************************

View File

@ -40,8 +40,6 @@
#include "arm_arch.h"
#include "arm_internal.h"
#include "cxd56_irq.h"
#ifdef CONFIG_SMP
# include "init/init.h"
#endif

View File

@ -1,74 +0,0 @@
/****************************************************************************
* arch/arm/src/cxd56xx/cxd56_irq.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_ARM_SRC_CXD56XX_CXD56_IRQ_H
#define __ARCH_ARM_SRC_CXD56XX_CXD56_IRQ_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* The size of one interrupt stack. This is the configured value aligned
* the 8-bytes as required by the ARM EABI.
*/
#define INTSTACK_SIZE (CONFIG_ARCH_INTERRUPTSTACK & ~7)
/****************************************************************************
* Public Types
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
#ifndef __ASSEMBLY__
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Functions Prototypes
****************************************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7
EXTERN uintptr_t arm_intstack_alloc(void);
EXTERN uintptr_t arm_intstack_top(void);
#endif
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif /* __ASSEMBLY__ */
#endif /* __ARCH_ARM_SRC_CXD56XX_CXD56_IRQ_H */

View File

@ -32,7 +32,6 @@
#endif
#include "hardware/imx_memorymap.h"
#include "imx_irq.h"
/****************************************************************************
* Pre-processor Definitions

View File

@ -31,7 +31,6 @@
#include "arm_internal.h"
#include "sctlr.h"
#include "gic.h"
#include "imx_irq.h"
/****************************************************************************
* Pre-processor Definitions

View File

@ -1,70 +0,0 @@
/****************************************************************************
* arch/arm/src/imx6/imx_irq.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_ARM_SRC_IMX6_IMX_IRQ_H
#define __ARCH_ARM_SRC_IMX6_IMX_IRQ_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* The size of one interrupt stack. This is the configured value aligned
* the 8-bytes as required by the ARM EABI.
*/
#define INTSTACK_SIZE (CONFIG_ARCH_INTERRUPTSTACK & ~7)
/****************************************************************************
* Public Data
****************************************************************************/
#ifndef __ASSEMBLY__
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7
EXTERN uintptr_t arm_intstack_alloc(void);
EXTERN uintptr_t arm_intstack_top(void);
#endif
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif /* __ASSEMBLY__ */
#endif /* __ARCH_ARM_SRC_IMX6_IMX_IRQ_H */

View File

@ -29,9 +29,6 @@
# include <sys/types.h>
# include <arch/lc823450/chip.h>
# include <arch/lc823450/irq.h>
# include "arm_arch.h"
# include "lc823450_irq.h"
# include "arm_arch.h"
#endif
/****************************************************************************

View File

@ -39,7 +39,6 @@
#include "ram_vectors.h"
#include "arm_arch.h"
#include "arm_internal.h"
#include "chip.h"
#include "lc823450_intc.h"
#ifdef CONFIG_DVFS

View File

@ -1,70 +0,0 @@
/****************************************************************************
* arch/arm/src/lc823450/lc823450_irq.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_ARM_SRC_LC823450_LC823450_IRQ_H
#define __ARCH_ARM_SRC_LC823450_LC823450_IRQ_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* The size of one interrupt stack. This is the configured value aligned
* the 8-bytes as required by the ARM EABI.
*/
#define INTSTACK_SIZE (CONFIG_ARCH_INTERRUPTSTACK & ~7)
/****************************************************************************
* Public Data
****************************************************************************/
#ifndef __ASSEMBLY__
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7
EXTERN uintptr_t arm_intstack_alloc(void);
EXTERN uintptr_t arm_intstack_top(void);
#endif
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif /* __ASSEMBLY__ */
#endif /* __ARCH_ARM_SRC_LC823450_LC823450_IRQ_H */

View File

@ -49,7 +49,6 @@
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 3
# include "hardware/rp2040_sio.h"
# include "rp2040_irq.h"
#endif
/****************************************************************************

View File

@ -37,8 +37,6 @@
#include "arm_arch.h"
#include "arm_internal.h"
#include "rp2040_irq.h"
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/

View File

@ -1,74 +0,0 @@
/****************************************************************************
* arch/arm/src/rp2040/rp2040_irq.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_ARM_SRC_RP2040_RP2040_IRQ_H
#define __ARCH_ARM_SRC_RP2040_RP2040_IRQ_H
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* The size of one interrupt stack. This is the configured value aligned
* the 8-bytes as required by the ARM EABI.
*/
#define INTSTACK_SIZE (CONFIG_ARCH_INTERRUPTSTACK & ~7)
/****************************************************************************
* Public Types
****************************************************************************/
/****************************************************************************
* Public Data
****************************************************************************/
#ifndef __ASSEMBLY__
#undef EXTERN
#if defined(__cplusplus)
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7
EXTERN uintptr_t arm_intstack_alloc(void);
EXTERN uintptr_t arm_intstack_top(void);
#endif
#undef EXTERN
#if defined(__cplusplus)
}
#endif
#endif /* __ASSEMBLY__ */
#endif /* __ARCH_ARM_SRC_RP2040_RP2040_IRQ_H */

View File

@ -255,6 +255,11 @@ void xtensa_coproc_disable(struct xtensa_cpstate_s *cpstate, int cpset);
/* IRQs */
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 15
uintptr_t xtensa_intstack_alloc(void);
uintptr_t xtensa_intstack_top(void);
#endif
uint32_t *xtensa_int_decode(uint32_t cpuints, uint32_t *regs);
uint32_t *xtensa_irq_dispatch(int irq, uint32_t *regs);
uint32_t xtensa_enable_cpuint(uint32_t *shadow, uint32_t intmask);

View File

@ -33,7 +33,6 @@
#include <nuttx/arch.h>
#include <nuttx/board.h>
#include "chip.h"
#include "xtensa.h"
#include "sched/sched.h"

View File

@ -36,7 +36,7 @@
#include <arch/xtensa/xtensa_corebits.h>
#include <arch/board/board.h>
#include <arch/chip/core-isa.h>
#include "chip.h"
#include "sched/sched.h"
#include "xtensa.h"

View File

@ -42,7 +42,6 @@
#include <arch/board/board.h>
#include "xtensa.h"
#include "chip.h"
/****************************************************************************
* Private Functions

View File

@ -114,11 +114,6 @@ extern "C"
* Public Functions Prototypes
****************************************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 15
uintptr_t xtensa_intstack_alloc(void);
uintptr_t xtensa_intstack_top(void);
#endif
#undef EXTERN
#if defined(__cplusplus)
}

View File

@ -108,11 +108,6 @@ extern "C"
* Public Functions Prototypes
****************************************************************************/
#if defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 15
uintptr_t xtensa_intstack_alloc(void);
uintptr_t xtensa_intstack_top(void);
#endif
#undef EXTERN
#if defined(__cplusplus)
}