arch/armv[6|7|8]-m: Move _vectors to arm_internal.h to avoid the duplication

and change the type of _vectors from uint32_t to const void *

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
Xiang Xiao
2022-09-20 06:41:52 +08:00
committed by Petro Karashchenko
parent 47bd07034c
commit 229b57d6cb
48 changed files with 35 additions and 382 deletions
+4 -5
View File
@@ -50,7 +50,7 @@
* Pre-processor Definitions
****************************************************************************/
#define IDLE_STACK ((unsigned int)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
#define IDLE_STACK ((const char *)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
#ifndef ARMV6M_PERIPHERAL_INTERRUPTS
# error ARMV6M_PERIPHERAL_INTERRUPTS must be defined to the number of I/O interrupts to be supported
@@ -81,7 +81,7 @@ extern void exception_common(void);
* Note that the [ ... ] designated initialiser is a GCC extension.
*/
const unsigned int _vectors[] locate_data(".vectors") =
const void *_vectors[] locate_data(".vectors") =
{
/* Initial stack */
@@ -89,10 +89,9 @@ const unsigned int _vectors[] locate_data(".vectors") =
/* Reset exception handler */
(unsigned int)&__start,
__start,
/* Vectors 2 - n point directly at the generic handler */
[2 ... (15 + ARMV6M_PERIPHERAL_INTERRUPTS)] = (unsigned int)
&exception_common
[2 ... (15 + ARMV6M_PERIPHERAL_INTERRUPTS)] = exception_common
};
+4 -5
View File
@@ -45,7 +45,7 @@
* Pre-processor Definitions
****************************************************************************/
#define IDLE_STACK ((unsigned int)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
#define IDLE_STACK ((const char *)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
#ifndef ARMV7M_PERIPHERAL_INTERRUPTS
# error ARMV7M_PERIPHERAL_INTERRUPTS must be defined to the number of I/O interrupts to be supported
@@ -76,7 +76,7 @@ extern void exception_common(void);
* Note that the [ ... ] designated initializer is a GCC extension.
*/
const unsigned int _vectors[] locate_data(".vectors") =
const void *_vectors[] locate_data(".vectors") =
{
/* Initial stack */
@@ -84,10 +84,9 @@ const unsigned int _vectors[] locate_data(".vectors") =
/* Reset exception handler */
(unsigned int)&__start,
__start,
/* Vectors 2 - n point directly at the generic handler */
[2 ... (15 + ARMV7M_PERIPHERAL_INTERRUPTS)] = (unsigned int)
&exception_common
[2 ... (15 + ARMV7M_PERIPHERAL_INTERRUPTS)] = exception_common
};
+4 -5
View File
@@ -45,7 +45,7 @@
* Pre-processor Definitions
****************************************************************************/
#define IDLE_STACK ((unsigned int)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
#define IDLE_STACK ((const char *)&_ebss+CONFIG_IDLETHREAD_STACKSIZE)
#ifndef ARMV8M_PERIPHERAL_INTERRUPTS
# error ARMV8M_PERIPHERAL_INTERRUPTS must be defined to the number of I/O interrupts to be supported
@@ -76,7 +76,7 @@ extern void exception_common(void);
* Note that the [ ... ] designated initializer is a GCC extension.
*/
const unsigned int _vectors[] locate_data(".vectors") =
const void *_vectors[] locate_data(".vectors") =
{
/* Initial stack */
@@ -84,10 +84,9 @@ const unsigned int _vectors[] locate_data(".vectors") =
/* Reset exception handler */
(unsigned int)&__start,
__start,
/* Vectors 2 - n point directly at the generic handler */
[2 ... (15 + ARMV8M_PERIPHERAL_INTERRUPTS)] = (unsigned int)
&exception_common
[2 ... (15 + ARMV8M_PERIPHERAL_INTERRUPTS)] = &exception_common
};
+12
View File
@@ -292,6 +292,18 @@ uintptr_t arm_intstack_top(void);
#if defined(CONFIG_ARCH_ARMV6M) || defined(CONFIG_ARCH_ARMV7M) || \
defined(CONFIG_ARCH_ARMV8M)
/* This is the address of the exception vector table (determined by the
* linker script).
*/
#if defined(__ICCARM__)
/* _vectors replaced on __vector_table for IAR C-SPY Simulator */
extern const void *__vector_table[];
#else
extern const void *_vectors[];
#endif
/* Interrupt acknowledge and dispatch */
void arm_ack_irq(int irq);
-10
View File
@@ -110,16 +110,6 @@ const uint32_t g_cpu_intstack_top[CONFIG_SMP_NCPUS] =
};
#endif /* defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7 */
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -96,16 +96,6 @@ void weak_function up_cpuctxload(void);
(CXD56M4_SYSH_PRIORITY_DEFAULT << 24 | CXD56M4_SYSH_PRIORITY_DEFAULT << 16 | \
CXD56M4_SYSH_PRIORITY_DEFAULT << 8 | CXD56M4_SYSH_PRIORITY_DEFAULT)
/****************************************************************************
* Public Data
****************************************************************************/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Public Functions
****************************************************************************/
-10
View File
@@ -72,16 +72,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Name: efm32_dumpnvic
*
-6
View File
@@ -71,12 +71,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -72,12 +72,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -74,16 +74,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -69,16 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -70,12 +70,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -70,12 +70,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -69,12 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
@@ -69,12 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -71,12 +71,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -71,12 +71,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -88,16 +88,6 @@ const uint32_t g_cpu_intstack_top[CONFIG_SMP_NCPUS] =
};
#endif /* defined(CONFIG_SMP) && CONFIG_ARCH_INTERRUPTSTACK > 7 */
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-4
View File
@@ -64,10 +64,6 @@
volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
/* extern int32_t __StackLimit; */
extern uint32_t _vectors[];
/****************************************************************************
* Private Function Declarations
****************************************************************************/
+4 -6
View File
@@ -31,7 +31,7 @@
****************************************************************************/
extern uint32_t __stack;
#define IDLE_STACK ((unsigned int)&__stack - 4)
#define IDLE_STACK ((const char *)&__stack - 4)
#ifndef ARMV8M_PERIPHERAL_INTERRUPTS
# error ARMV8M_PERIPHERAL_INTERRUPTS must be defined to the number of I/O interrupts to be supported
#endif
@@ -63,8 +63,7 @@ extern void exception_common(void);
* Note that the [ ... ] designated initialiser is a GCC extension.
*/
const unsigned int _vectors[] locate_data(".vectors") \
aligned_data(0x100) =
const void *_vectors[] locate_data(".vectors") aligned_data(0x100) =
{
/* Initial stack */
@@ -72,11 +71,10 @@ const unsigned int _vectors[] locate_data(".vectors") \
/* Reset exception handler */
(unsigned int) &ram_start,
ram_start,
/* Vectors 2 - n point directly at the generic handler */
[2 ...(15 + ARMV8M_PERIPHERAL_INTERRUPTS)] = (unsigned int)
&exception_common
[2 ...(15 + ARMV8M_PERIPHERAL_INTERRUPTS)] = exception_common
};
@@ -69,12 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-6
View File
@@ -76,12 +76,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -72,16 +72,6 @@
volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -72,16 +72,6 @@
volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -72,16 +72,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-12
View File
@@ -72,18 +72,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
#if defined(__ICCARM__)
/* _vectors replaced on __vector_table for IAR C-SPY Simulator */
extern uint32_t __vector_table[];
#else
extern uint32_t _vectors[];
#endif
/****************************************************************************
* Private Functions
****************************************************************************/
-20
View File
@@ -65,26 +65,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M3/4 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000. If we
* are using the STMicro DFU bootloader, then the vector table will be offset
* to a different location in FLASH and we will need to set the NVIC vector
* location to this alternative location.
*/
#if defined(__ICCARM__)
/* _vectors replaced on __vector_table for IAR C-SPY Simulator */
extern uint32_t __vector_table[];
#else
extern uint32_t _vectors[];
#endif
/****************************************************************************
* Inline Functions
****************************************************************************/
-10
View File
@@ -73,16 +73,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-14
View File
@@ -45,20 +45,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M7 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000.
* If we are using the STMicro DFU bootloader, then the vector table will
* be offset to a different location in FLASH and we will need to set the
* NVIC vector location to this alternative location.
*/
extern uint32_t _vectors[]; /* See stm32_vectors.S */
/****************************************************************************
* Inline Functions
****************************************************************************/
-6
View File
@@ -73,12 +73,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-14
View File
@@ -45,20 +45,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M7 vector table (as positioned by the
* linker script). The standard location for the vector table is at the
* beginning of FLASH at address 0x0800:0000. If we are using the STMicro
* DFU bootloader, then the vector table will be offset to a different
* location in FLASH and we will need to set the NVIC vector location to
* this alternative location.
*/
extern uint32_t _vectors[]; /* See armv7-m/arm_vectors.c */
/****************************************************************************
* Inline Functions
****************************************************************************/
-6
View File
@@ -69,12 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-14
View File
@@ -57,20 +57,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M4 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000.
* If we are using the STMicro DFU bootloader, then the vector table will be
* offset to a different location in FLASH and we will need to set the NVIC
* vector location to this alternative location.
*/
extern uint32_t _vectors[]; /* See stm32l4_vectors.S */
/****************************************************************************
* Inline Functions
****************************************************************************/
-10
View File
@@ -69,16 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
/****************************************************************************
* Name: stm32l5_dumpnvic
*
-14
View File
@@ -51,20 +51,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M33 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000. If we
* are using the STMicro DFU bootloader, then the vector table will be offset
* to a different location in FLASH and we will need to set the NVIC vector
* location to this alternative location.
*/
extern uint32_t _vectors[]; /* See stm32l5_vectors.S */
/****************************************************************************
* Inline Functions
****************************************************************************/
-6
View File
@@ -69,12 +69,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-14
View File
@@ -51,20 +51,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M33 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000. If we
* are using the STMicro DFU bootloader, then the vector table will be offset
* to a different location in FLASH and we will need to set the NVIC vector
* location to this alternative location.
*/
extern uint32_t _vectors[]; /* See stm32_vectors.S */
/****************************************************************************
* Inline Functions
****************************************************************************/
-20
View File
@@ -45,26 +45,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M4 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000. If we
* are using the STMicro DFU bootloader, then the vector table will be offset
* to a different location in FLASH and we will need to set the NVIC vector
* location to this alternative location.
*/
#if defined(__ICCARM__)
/* _vectors replaced on __vector_table for IAR C-SPY Simulator */
EXTERN uint32_t __vector_table[];
#else
EXTERN uint32_t _vectors[];
#endif
/****************************************************************************
* Public Types
****************************************************************************/
-6
View File
@@ -70,12 +70,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Functions
****************************************************************************/
-14
View File
@@ -47,20 +47,6 @@ extern "C"
#define EXTERN extern
#endif
/****************************************************************************
* Public Data
****************************************************************************/
/* This symbol references the Cortex-M33 vector table (as positioned by the
* linker script, ld.script or ld.script.dfu. The standard location for the
* vector table is at the beginning of FLASH at address 0x0800:0000. If we
* are using the STMicro DFU bootloader, then the vector table will be offset
* to a different location in FLASH and we will need to set the NVIC vector
* location to this alternative location.
*/
extern uint32_t _vectors[]; /* See stm32wl5_vectors.S */
/****************************************************************************
* Inline Functions
****************************************************************************/
-10
View File
@@ -70,16 +70,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
-10
View File
@@ -68,16 +68,6 @@
volatile uint32_t *g_current_regs[1];
/* This is the address of the exception vector table (determined by the
* linker script).
*/
extern uint32_t _vectors[];
/****************************************************************************
* Private Data
****************************************************************************/
/****************************************************************************
* Private Functions
****************************************************************************/
@@ -23,6 +23,7 @@
****************************************************************************/
#include "imxrt_flexspi_nor_boot.h"
#include "arm_internal.h"
/****************************************************************************
* Public Data
@@ -91,7 +91,7 @@
/* Located in Destination Memory */
#define IMAGE_ENTRY_ADDRESS ((uint32_t)&_vectors)
#define IMAGE_ENTRY_ADDRESS ((uint32_t)_vectors)
#define IMAG_VECTOR_TABLE LOCATE_IN_DEST(&g_image_vector_table)
/****************************************************************************
@@ -156,7 +156,6 @@ struct boot_data_s
****************************************************************************/
extern const struct boot_data_s g_boot_data;
extern const uint8_t g_dcd_data[];
extern const uint32_t _vectors[];
extern const uint8_t g_dcd_data[];
#endif /* __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */
@@ -23,6 +23,7 @@
****************************************************************************/
#include "imxrt_flexspi_nor_boot.h"
#include "arm_internal.h"
/****************************************************************************
* Public Data
@@ -95,7 +95,7 @@
/* Located in Destination Memory */
#define IMAGE_ENTRY_ADDRESS ((uint32_t)&_vectors)
#define IMAGE_ENTRY_ADDRESS ((uint32_t)_vectors)
#define IMAG_VECTOR_TABLE LOCATE_IN_DEST(&g_image_vector_table)
/****************************************************************************
@@ -163,6 +163,5 @@ extern const struct boot_data_s g_boot_data;
#ifdef CONFIG_IMXRT1064_EVK_SDRAM
extern const uint8_t g_dcd_data[];
#endif
extern const uint32_t _vectors[];
#endif /* __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */
@@ -23,6 +23,7 @@
****************************************************************************/
#include "imxrt_flexspi_nor_boot.h"
#include "arm_internal.h"
/****************************************************************************
* Public Data
@@ -91,7 +91,7 @@
/* Located in Destination Memory */
#define IMAGE_ENTRY_ADDRESS ((uint32_t)&_vectors)
#define IMAGE_ENTRY_ADDRESS ((uint32_t)_vectors)
#define IMAG_VECTOR_TABLE LOCATE_IN_DEST(&g_image_vector_table)
/****************************************************************************
@@ -152,6 +152,5 @@ struct boot_data_s
extern const struct boot_data_s g_boot_data;
extern const uint8_t g_dcd_data[];
extern const uint32_t _vectors[];
#endif /* __BOARDS_ARM_IMXRT_TEENSY_4_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */