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

commit 9dfe5d6bf3faf3a3c13cdb07ddbcb2bd71cbdcda
Author: Marco Casaroli <[email protected]>
AuthorDate: Tue Oct 27 17:17:14 2026 +0100

    arch, boards: Declare the global data with extern instead of EXTERN.
    
    As in include/, 98 headers of arch/ (mostly irq.h, for the saved
    registers of the current task) and 3 of boards/ declared global data
    with EXTERN.  The declarations are inside the extern "C" block of the
    header, so plain extern gives them C linkage in C++ too.  Declare them
    with extern and remove the definitions of EXTERN.
    
    avrdx_serial.h opened its extern "C" block but did not close it; close
    it at the end of the declarations.
    
    Assisted-by: Claude Code:claude-opus-5-5
    Signed-off-by: Marco Casaroli <[email protected]>
---
 arch/arm/include/lc823450/irq.h                    |  8 +--
 arch/arm/src/am335x/am335x_gpio.h                  |  7 +-
 arch/arm/src/at32/at32_gpio.h                      |  7 +-
 arch/arm/src/common/arm_internal.h                 | 42 ++++++------
 arch/arm/src/common/stm32/stm32_ccm_m3m4_v1.h      |  6 +-
 arch/arm/src/common/stm32/stm32_gpio_m0_v1.h       |  7 +-
 arch/arm/src/common/stm32/stm32_gpio_m33_v1.h      |  7 +-
 arch/arm/src/common/stm32/stm32_gpio_m3m4_v1v2.h   |  7 +-
 arch/arm/src/gd32f4/gd32f4xx_gpio.h                |  7 +-
 arch/arm/src/gd32w51x/gd32w51x_gpio.h              |  7 +-
 arch/arm/src/imx9/imx9_gpio.h                      |  7 +-
 arch/arm/src/imxrt/imxrt_clockconfig_ver3.h        |  7 +-
 arch/arm/src/imxrt/imxrt_gpio.h                    |  7 +-
 arch/arm/src/imxrt/imxrt_rgpio.h                   |  7 +-
 arch/arm/src/lc823450/lc823450_pwm.h               |  6 +-
 arch/arm/src/lpc17xx_40xx/lpc176x_gpio.h           | 14 ++--
 arch/arm/src/lpc17xx_40xx/lpc17_40_adc.h           |  7 +-
 arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h         |  7 +-
 arch/arm/src/lpc17xx_40xx/lpc17_40_gpio.h          | 12 ++--
 arch/arm/src/lpc31xx/lpc31.h                       |  7 +-
 arch/arm/src/lpc31xx/lpc31_cgudrvr.h               |  8 +--
 arch/arm/src/lpc43xx/lpc43_cgu.h                   | 11 +---
 arch/arm/src/max326xx/max326_clockconfig.h         |  7 +-
 arch/arm/src/mcx-nxxx/nxxx_gpio.h                  |  7 +-
 arch/arm/src/n32h7/n32_gpio.h                      |  7 +-
 arch/arm/src/rp23xx/rp23xx_pm.h                    |  7 +-
 arch/arm/src/s32k1xx/s32k1xx_clockconfig.h         |  7 +-
 arch/arm/src/s32k1xx/s32k1xx_periphclocks.h        |  9 +--
 arch/arm/src/s32k3xx/s32k3xx_periphclocks.h        |  9 +--
 arch/arm/src/sam34/sam4s_nand.h                    |  7 +-
 arch/arm/src/sama5/sam_nand.h                      |  7 +-
 arch/arm/src/sama5/sam_pmecc.h                     |  9 +--
 arch/arm/src/samd2l2/sam_usart.h                   | 19 ++----
 arch/arm/src/samd5e5/sam_usart.h                   | 23 +++----
 arch/arm/src/samv7/sam_gpio.h                      |  7 +-
 arch/arm/src/stm32f7/stm32_dtcm.h                  |  6 +-
 arch/arm/src/stm32f7/stm32_gpio.h                  |  7 +-
 arch/arm/src/stm32h7/stm32_dtcm.h                  |  6 +-
 arch/arm/src/stm32h7/stm32_gpio.h                  |  7 +-
 arch/arm/src/stm32l4/stm32l4_gpio.h                |  7 +-
 arch/arm/src/stm32n6/stm32_gpio.h                  |  7 +-
 arch/arm/src/stm32wb/stm32wb_gpio.h                |  7 +-
 arch/arm/src/stm32wl5/stm32wl5_gpio.h              |  7 +-
 arch/arm64/src/common/arm64_internal.h             | 40 +++++-------
 arch/arm64/src/imx9/imx9_gpio.h                    |  7 +-
 arch/avr/include/irq.h                             |  8 +--
 arch/avr/src/avrdx/avrdx_gpio.h                    |  6 +-
 arch/avr/src/avrdx/avrdx_serial.h                  | 16 ++---
 arch/ceva/include/arch.h                           |  6 +-
 arch/ceva/include/irq.h                            |  6 +-
 arch/ceva/src/common/ceva_internal.h               | 76 ++++++++++------------
 arch/hc/include/irq.h                              |  6 +-
 arch/mips/include/irq.h                            |  6 +-
 arch/mips/src/jz4780/jz4780_gpio.h                 |  7 +-
 arch/mips/src/pic32mz/pic32mz_gpio.h               |  7 +-
 arch/misoc/include/irq.h                           |  6 +-
 arch/or1k/include/irq.h                            |  6 +-
 arch/or1k/src/common/or1k_internal.h               | 30 ++++-----
 arch/renesas/include/irq.h                         |  6 +-
 arch/risc-v/include/bl602/irq.h                    |  7 +-
 arch/risc-v/include/irq.h                          |  7 +-
 arch/risc-v/src/bl602/bl602_lowputc.h              |  9 +--
 arch/risc-v/src/c906/c906_clockconfig.h            | 10 +--
 arch/risc-v/src/c906/c906_lowputc.h                |  7 +-
 arch/risc-v/src/common/riscv_common_memorymap.h    | 33 ++++------
 arch/risc-v/src/eic7700x/eic7700x_clk.h            | 10 +--
 arch/risc-v/src/eic7700x/eic7700x_pinctrl.h        | 12 ++--
 arch/risc-v/src/eic7700x/eic7700x_reset.h          |  8 +--
 arch/risc-v/src/fe310/fe310_clockconfig.h          |  8 +--
 arch/risc-v/src/fe310/fe310_gpio.h                 | 13 ++--
 arch/risc-v/src/fe310/fe310_lowputc.h              |  7 +-
 arch/risc-v/src/gd32vw55x/gd32vw55x_gpio.h         |  7 +-
 arch/risc-v/src/hpm6000/hpm_clockconfig.h          |  8 +--
 arch/risc-v/src/hpm6000/hpm_lowputc.h              |  7 +-
 arch/risc-v/src/hpm6750/hpm6750_clockconfig.h      |  8 +--
 arch/risc-v/src/hpm6750/hpm6750_lowputc.h          |  7 +-
 arch/risc-v/src/k210/k210_clockconfig.h            | 10 +--
 arch/risc-v/src/k210/k210_lowputc.h                |  7 +-
 arch/risc-v/src/k210/k210_sysctl.h                 | 22 +++----
 arch/risc-v/src/litex/litex_clockconfig.h          |  8 +--
 arch/risc-v/src/litex/litex_lowputc.h              |  7 +-
 arch/risc-v/src/mpfs/mpfs_clockconfig.h            | 10 +--
 arch/risc-v/src/mpfs/mpfs_ddr.h                    |  7 +-
 arch/risc-v/src/mpfs/mpfs_dma.h                    | 26 ++++----
 arch/risc-v/src/mpfs/mpfs_lowputc.h                |  7 +-
 arch/risc-v/src/rv32m1/rv32m1_clockconfig.h        |  8 +--
 arch/risc-v/src/rv32m1/rv32m1_gpio.h               | 23 +++----
 arch/risc-v/src/rv32m1/rv32m1_linker.h             | 15 ++---
 arch/risc-v/src/rv32m1/rv32m1_lowputc.h            |  7 +-
 arch/risc-v/src/rv32m1/rv32m1_pcc.h                |  9 +--
 arch/risc-v/src/rv32m1/rv32m1_timersvc.h           | 13 ++--
 arch/risc-v/src/rv32m1/rv32m1_uart.h               |  9 +--
 arch/sim/include/irq.h                             |  6 +-
 arch/sparc/include/irq.h                           |  6 +-
 arch/tricore/include/irq.h                         |  6 +-
 arch/x86/include/irq.h                             |  6 +-
 arch/z16/include/irq.h                             |  6 +-
 arch/z80/src/ez80/chip.h                           |  6 +-
 .../include/rp23xx_extra_gpio.h                    |  7 +-
 .../avr/at90usb/micropendous3/src/micropendous3.h  |  8 +--
 boards/z80/z80/z80sim/include/board.h              |  9 +--
 101 files changed, 290 insertions(+), 749 deletions(-)

diff --git a/arch/arm/include/lc823450/irq.h b/arch/arm/include/lc823450/irq.h
index 2e4f2523be5..bab9a16725e 100644
--- a/arch/arm/include/lc823450/irq.h
+++ b/arch/arm/include/lc823450/irq.h
@@ -267,23 +267,19 @@ struct lc823450_irq_ops
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Functions Prototypes
  ****************************************************************************/
 
-EXTERN int lc823450_irq_srctype(int irq, enum lc823450_srctype_e srctype);
+extern int lc823450_irq_srctype(int irq, enum lc823450_srctype_e srctype);
 #ifdef CONFIG_LC823450_VIRQ
-EXTERN int lc823450_irq_register(int irq, struct lc823450_irq_ops *ops);
+extern int lc823450_irq_register(int irq, struct lc823450_irq_ops *ops);
 #endif /* CONFIG_LC823450_VIRQ */
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/am335x/am335x_gpio.h 
b/arch/arm/src/am335x/am335x_gpio.h
index a3d2fa6374c..fb60da13ea3 100644
--- a/arch/arm/src/am335x/am335x_gpio.h
+++ b/arch/arm/src/am335x/am335x_gpio.h
@@ -167,20 +167,16 @@ typedef uint32_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Inline Functions
  ****************************************************************************/
 
-EXTERN const uintptr_t g_gpiobase[AM335X_GPIO_NPORTS];
+extern const uintptr_t g_gpiobase[AM335X_GPIO_NPORTS];
 #define am335x_gpion_vbase(n) (g_gpiobase[(n)])
 
 /****************************************************************************
@@ -299,7 +295,6 @@ int am335x_dump_gpio(uint32_t pinset, const char *msg);
 
 gpio_pinset_t am335x_periph_gpio(gpio_pinset_t pinset);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/at32/at32_gpio.h b/arch/arm/src/at32/at32_gpio.h
index 3e877750a62..36255a7d1fb 100644
--- a/arch/arm/src/at32/at32_gpio.h
+++ b/arch/arm/src/at32/at32_gpio.h
@@ -233,18 +233,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[AT32_NGPIO_PORTS];
+extern const uint32_t g_gpiobase[AT32_NGPIO_PORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -385,7 +381,6 @@ int at32_dumpgpio(uint32_t pinset, const char *msg);
 
 void at32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/common/arm_internal.h 
b/arch/arm/src/common/arm_internal.h
index de1c71af826..5e77ae30bab 100644
--- a/arch/arm/src/common/arm_internal.h
+++ b/arch/arm/src/common/arm_internal.h
@@ -181,11 +181,8 @@ typedef void (*up_vector_t)(void);
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* This is the beginning of heap as provided from arm_head.S.
@@ -194,28 +191,28 @@ extern "C"
  * CONFIG_RAM_END
  */
 
-EXTERN const uintptr_t g_idle_topstack;
+extern const uintptr_t g_idle_topstack;
 
 /* Address of the saved user stack pointer */
 
 #if CONFIG_ARCH_INTERRUPTSTACK > 3
-EXTERN uint8_t g_intstackalloc[]; /* Allocated stack base */
-EXTERN uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
+extern uint8_t g_intstackalloc[]; /* Allocated stack base */
+extern uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
 #endif
 
 /* These symbols are setup by the linker script. */
 
-EXTERN uint8_t _stext[];           /* Start of .text */
-EXTERN uint8_t _etext[];           /* End_1 of .text + .rodata */
-EXTERN const uint8_t _eronly[];    /* End+1 of read only section (.text + 
.rodata) */
-EXTERN uint8_t _sdata[];           /* Start of .data */
-EXTERN uint8_t _edata[];           /* End+1 of .data */
-EXTERN uint8_t _sbss[];            /* Start of .bss */
-EXTERN uint8_t _ebss[];            /* End+1 of .bss */
-EXTERN uint8_t _stdata[];          /* Start of .tdata */
-EXTERN uint8_t _etdata[];          /* End+1 of .tdata */
-EXTERN uint8_t _stbss[];           /* Start of .tbss */
-EXTERN uint8_t _etbss[];           /* End+1 of .tbss */
+extern uint8_t _stext[];           /* Start of .text */
+extern uint8_t _etext[];           /* End_1 of .text + .rodata */
+extern const uint8_t _eronly[];    /* End+1 of read only section (.text + 
.rodata) */
+extern uint8_t _sdata[];           /* Start of .data */
+extern uint8_t _edata[];           /* End+1 of .data */
+extern uint8_t _sbss[];            /* Start of .bss */
+extern uint8_t _ebss[];            /* End+1 of .bss */
+extern uint8_t _stdata[];          /* Start of .tdata */
+extern uint8_t _etdata[];          /* End+1 of .tdata */
+extern uint8_t _stbss[];           /* Start of .tbss */
+extern uint8_t _etbss[];           /* End+1 of .tbss */
 
 /* Sometimes, functions must be executed from RAM.  In this case, the
  * following macro may be used (with GCC!) to specify a function that will
@@ -239,9 +236,9 @@ EXTERN uint8_t _etbss[];           /* End+1 of .tbss */
  * functions from flash to RAM.
  */
 
-EXTERN const uint8_t _framfuncs[]; /* Copy source address in FLASH */
-EXTERN uint8_t _sramfuncs[];       /* Copy destination start address in RAM */
-EXTERN uint8_t _eramfuncs[];       /* Copy destination end address in RAM */
+extern const uint8_t _framfuncs[]; /* Copy source address in FLASH */
+extern uint8_t _sramfuncs[];       /* Copy destination start address in RAM */
+extern uint8_t _eramfuncs[];       /* Copy destination end address in RAM */
 
 #else /* CONFIG_ARCH_RAMFUNCS */
 
@@ -314,9 +311,9 @@ uint32_t *arm_doirq(int irq, uint32_t *regs);
 #if defined(__ICCARM__)
 /* _vectors replaced on __vector_table for IAR C-SPY Simulator */
 
-EXTERN const void *__vector_table[];
+extern const void *__vector_table[];
 #else
-EXTERN const void * const _vectors[];
+extern const void * const _vectors[];
 #endif
 
 #ifdef CONFIG_LIB_SYSCALL
@@ -523,7 +520,6 @@ int arm_enable_dbgmonitor(void);
 int arm_dbgmonitor(int irq, void *context, void *arg);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/common/stm32/stm32_ccm_m3m4_v1.h 
b/arch/arm/src/common/stm32/stm32_ccm_m3m4_v1.h
index 705a58c0804..352f64fa572 100644
--- a/arch/arm/src/common/stm32/stm32_ccm_m3m4_v1.h
+++ b/arch/arm/src/common/stm32/stm32_ccm_m3m4_v1.h
@@ -102,20 +102,16 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN struct mm_heap_s *g_ccm_heap;
+extern struct mm_heap_s *g_ccm_heap;
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/common/stm32/stm32_gpio_m0_v1.h 
b/arch/arm/src/common/stm32/stm32_gpio_m0_v1.h
index 381a26627db..be398152acb 100644
--- a/arch/arm/src/common/stm32/stm32_gpio_m0_v1.h
+++ b/arch/arm/src/common/stm32/stm32_gpio_m0_v1.h
@@ -240,18 +240,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NPORTS];
+extern const uint32_t g_gpiobase[STM32_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -366,7 +362,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/common/stm32/stm32_gpio_m33_v1.h 
b/arch/arm/src/common/stm32/stm32_gpio_m33_v1.h
index c818e60bf74..d371c14836d 100644
--- a/arch/arm/src/common/stm32/stm32_gpio_m33_v1.h
+++ b/arch/arm/src/common/stm32/stm32_gpio_m33_v1.h
@@ -226,18 +226,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NPORTS];
+extern const uint32_t g_gpiobase[STM32_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -352,7 +348,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/common/stm32/stm32_gpio_m3m4_v1v2.h 
b/arch/arm/src/common/stm32/stm32_gpio_m3m4_v1v2.h
index 17689d672d9..c05c9ee9797 100644
--- a/arch/arm/src/common/stm32/stm32_gpio_m3m4_v1v2.h
+++ b/arch/arm/src/common/stm32/stm32_gpio_m3m4_v1v2.h
@@ -401,18 +401,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NGPIO_PORTS];
+extern const uint32_t g_gpiobase[STM32_NGPIO_PORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -553,7 +549,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/gd32f4/gd32f4xx_gpio.h 
b/arch/arm/src/gd32f4/gd32f4xx_gpio.h
index 73d3e1cd145..428f24ee095 100644
--- a/arch/arm/src/gd32f4/gd32f4xx_gpio.h
+++ b/arch/arm/src/gd32f4/gd32f4xx_gpio.h
@@ -226,18 +226,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpio_base[GD32_NGPIO_PORTS];
+extern const uint32_t g_gpio_base[GD32_NGPIO_PORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -306,7 +302,6 @@ int gd32_dump_gpio(uint32_t pinset, const char *msg);
 #  define gd32_dump_gpio(p,m)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/gd32w51x/gd32w51x_gpio.h 
b/arch/arm/src/gd32w51x/gd32w51x_gpio.h
index 870bc8b953c..2c99bafe063 100644
--- a/arch/arm/src/gd32w51x/gd32w51x_gpio.h
+++ b/arch/arm/src/gd32w51x/gd32w51x_gpio.h
@@ -234,18 +234,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO port */
 
-EXTERN const uint32_t g_gpio_base[GD32W51X_NGPIO_PORTS];
+extern const uint32_t g_gpio_base[GD32W51X_NGPIO_PORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -353,7 +349,6 @@ int gd32_dump_gpio(uint32_t pinset, const char *msg);
 #  define gd32_dump_gpio(p,m) (0)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/imx9/imx9_gpio.h b/arch/arm/src/imx9/imx9_gpio.h
index e99b1bb2ac5..dc58c70b7b6 100644
--- a/arch/arm/src/imx9/imx9_gpio.h
+++ b/arch/arm/src/imx9/imx9_gpio.h
@@ -213,20 +213,16 @@ typedef uint16_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Look-up table that maps GPIO1..GPIOn indexes into GPIO register base
  * addresses
  */
 
-EXTERN const uintptr_t g_gpio_base[];
+extern const uintptr_t g_gpio_base[];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -333,7 +329,6 @@ int imx9_gpioirq_disable(gpio_pinset_t pinset);
 #  define imx9_gpioirq_disable(pinset) 0
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/imxrt/imxrt_clockconfig_ver3.h 
b/arch/arm/src/imxrt/imxrt_clockconfig_ver3.h
index ac7199b1531..24811775dab 100644
--- a/arch/arm/src/imxrt/imxrt_clockconfig_ver3.h
+++ b/arch/arm/src/imxrt/imxrt_clockconfig_ver3.h
@@ -194,16 +194,12 @@ struct clock_configuration_s
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN const struct clock_configuration_s g_initial_clkconfig;
+extern const struct clock_configuration_s g_initial_clkconfig;
 
 /****************************************************************************
  * Pre-processor Definitions
@@ -327,7 +323,6 @@ int imxrt_get_clock(int clkname, uint32_t *frequency);
 
 int imxrt_get_rootclock(uint32_t clkroot, uint32_t *frequency);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/imxrt/imxrt_gpio.h b/arch/arm/src/imxrt/imxrt_gpio.h
index 5523cdbbc56..8085970640d 100644
--- a/arch/arm/src/imxrt/imxrt_gpio.h
+++ b/arch/arm/src/imxrt/imxrt_gpio.h
@@ -266,20 +266,16 @@ typedef uint32_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Look-up table that maps GPIO1..GPIOn indexes into GPIO register base
  * addresses
  */
 
-EXTERN const uintptr_t g_gpio_base[IMXRT_GPIO_NPORTS];
+extern const uintptr_t g_gpio_base[IMXRT_GPIO_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -387,7 +383,6 @@ int imxrt_dump_gpio(uint32_t pinset, const char *msg);
 #  define imxrt_dumpgpio(p,m)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/imxrt/imxrt_rgpio.h b/arch/arm/src/imxrt/imxrt_rgpio.h
index 194b93fd231..71be145cf6b 100644
--- a/arch/arm/src/imxrt/imxrt_rgpio.h
+++ b/arch/arm/src/imxrt/imxrt_rgpio.h
@@ -173,20 +173,16 @@ typedef imxrt_pinset_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Look-up table that maps GPIO1..GPIOn indexes into RGPIO instance base
  * addresses.
  */
 
-EXTERN const uintptr_t g_gpio_base[IMXRT_GPIO_NPORTS];
+extern const uintptr_t g_gpio_base[IMXRT_GPIO_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -242,7 +238,6 @@ int imxrt_gpioirq_disable(gpio_pinset_t pinset);
 #  define imxrt_gpioirq_disable(pinset)          0
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/lc823450/lc823450_pwm.h 
b/arch/arm/src/lc823450/lc823450_pwm.h
index 57545497868..2f0a1f673b2 100644
--- a/arch/arm/src/lc823450/lc823450_pwm.h
+++ b/arch/arm/src/lc823450/lc823450_pwm.h
@@ -79,20 +79,16 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN struct pwm_lowerhalf_s *lc823450_pwminitialize(int timer);
+extern struct pwm_lowerhalf_s *lc823450_pwminitialize(int timer);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/lpc17xx_40xx/lpc176x_gpio.h 
b/arch/arm/src/lpc17xx_40xx/lpc176x_gpio.h
index d1291c0a1a1..5599dfff294 100644
--- a/arch/arm/src/lpc17xx_40xx/lpc176x_gpio.h
+++ b/arch/arm/src/lpc17xx_40xx/lpc176x_gpio.h
@@ -154,24 +154,20 @@ typedef uint16_t lpc17_40_pinset_t;
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* These tables have global scope only because they are shared between
  * lpc17_40_gpio.c, lpc17_40_gpioint.c, and lpc17_40_gpiodbg.c
  */
 
-EXTERN const uint32_t g_lopinsel[GPIO_NPORTS];
-EXTERN const uint32_t g_hipinsel[GPIO_NPORTS];
-EXTERN const uint32_t g_lopinmode[GPIO_NPORTS];
-EXTERN const uint32_t g_hipinmode[GPIO_NPORTS];
-EXTERN const uint32_t g_odmode[GPIO_NPORTS];
+extern const uint32_t g_lopinsel[GPIO_NPORTS];
+extern const uint32_t g_hipinsel[GPIO_NPORTS];
+extern const uint32_t g_lopinmode[GPIO_NPORTS];
+extern const uint32_t g_hipinmode[GPIO_NPORTS];
+extern const uint32_t g_odmode[GPIO_NPORTS];
 
 /****************************************************************************
  * Public Functions Prototypes
diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_adc.h 
b/arch/arm/src/lpc17xx_40xx/lpc17_40_adc.h
index c08663ce657..6573f85f042 100644
--- a/arch/arm/src/lpc17xx_40xx/lpc17_40_adc.h
+++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_adc.h
@@ -58,13 +58,9 @@
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* The errata that states: "A/D Global Data register should not be used with
@@ -82,7 +78,7 @@ extern "C"
  */
 
 #ifdef CONFIG_LPC17_40_ADC_CHANLIST
-EXTERN uint8_t g_adc_chanlist[CONFIG_LPC17_40_ADC_NCHANNELS];
+extern uint8_t g_adc_chanlist[CONFIG_LPC17_40_ADC_NCHANNELS];
 #endif
 
 /****************************************************************************
@@ -104,7 +100,6 @@ EXTERN uint8_t 
g_adc_chanlist[CONFIG_LPC17_40_ADC_NCHANNELS];
 struct adc_dev_s *lpc17_40_adcinitialize(void);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h 
b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h
index 3c40293a016..2349b91335f 100644
--- a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h
+++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpdma.h
@@ -105,13 +105,9 @@ struct lpc17_40_dmaregs_s
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* If the following value is zero, then there is no DMA in progress. This
@@ -123,7 +119,7 @@ extern "C"
  * disabled in order to save power."
  */
 
-EXTERN volatile uint8_t g_dma_inprogress;
+extern volatile uint8_t g_dma_inprogress;
 
 /****************************************************************************
  * Public Functions Prototypes
@@ -237,7 +233,6 @@ void lpc17_40_dmadump(DMA_HANDLE handle,
 #  define lpc17_40_dmadump(handle,regs,msg)
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpio.h 
b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpio.h
index 48876086ef0..02f5a940288 100644
--- a/arch/arm/src/lpc17xx_40xx/lpc17_40_gpio.h
+++ b/arch/arm/src/lpc17xx_40xx/lpc17_40_gpio.h
@@ -63,13 +63,9 @@
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* These tables have global scope only because they are shared between
@@ -77,12 +73,12 @@ extern "C"
  */
 
 #ifdef CONFIG_LPC17_40_GPIOIRQ
-EXTERN uint64_t g_intedge0;
-EXTERN uint64_t g_intedge2;
+extern uint64_t g_intedge0;
+extern uint64_t g_intedge2;
 #endif
 
-EXTERN const uint32_t g_fiobase[GPIO_NPORTS];
-EXTERN const uint32_t g_intbase[GPIO_NPORTS];
+extern const uint32_t g_fiobase[GPIO_NPORTS];
+extern const uint32_t g_intbase[GPIO_NPORTS];
 
 /****************************************************************************
  * Public Functions Prototypes
diff --git a/arch/arm/src/lpc31xx/lpc31.h b/arch/arm/src/lpc31xx/lpc31.h
index e2218e57e78..086b7b77bb2 100644
--- a/arch/arm/src/lpc31xx/lpc31.h
+++ b/arch/arm/src/lpc31xx/lpc31.h
@@ -59,13 +59,9 @@
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -219,7 +215,7 @@ int lpc31_spicmddata(struct spi_dev_s *dev,
  *   If USB is supported and the board supports a pullup via GPIO (for USB
  *   software connect and disconnect), then the board software must provide
  *   lpc31_pullup. See include/nuttx/usb/usbdev.h for additional description
- *   of this method. Alternatively, if no pull-up GPIO the following EXTERN
+ *   of this method. Alternatively, if no pull-up GPIO the following extern
  *   can be redefined to be NULL.
  *
  ****************************************************************************/
@@ -354,7 +350,6 @@ void sdio_mediachange(struct sdio_dev_s *dev, bool 
cardinslot);
 
 void sdio_wrprotect(struct sdio_dev_s *dev, bool wrprotect);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/lpc31xx/lpc31_cgudrvr.h 
b/arch/arm/src/lpc31xx/lpc31_cgudrvr.h
index 33dc9016c5b..5a43f8893d6 100644
--- a/arch/arm/src/lpc31xx/lpc31_cgudrvr.h
+++ b/arch/arm/src/lpc31xx/lpc31_cgudrvr.h
@@ -175,11 +175,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Clock domains */
@@ -525,7 +522,7 @@ struct lpc31_pllconfig_s
  * programmed frequency of every input source
  */
 
-EXTERN uint32_t g_boardfreqin[CGU_NFREQIN];
+extern uint32_t g_boardfreqin[CGU_NFREQIN];
 
 /* This instance of the lpc31_clkinit_s structure provides the initial,
  * default clock configuration for the board.  Every board must provide an
@@ -533,7 +530,7 @@ EXTERN uint32_t g_boardfreqin[CGU_NFREQIN];
  * the boot-up logic to configure initial lpc31xx clocking.
  */
 
-EXTERN const struct lpc31_clkinit_s g_boardclks;
+extern const struct lpc31_clkinit_s g_boardclks;
 
 /****************************************************************************
  * Inline Functions
@@ -797,7 +794,6 @@ void lpc31_enableexten(enum lpc31_clockid_e clkid);
 
 void lpc31_disableexten(enum lpc31_clockid_e clkid);
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/lpc43xx/lpc43_cgu.h b/arch/arm/src/lpc43xx/lpc43_cgu.h
index be83c83a20e..37897ceab86 100644
--- a/arch/arm/src/lpc43xx/lpc43_cgu.h
+++ b/arch/arm/src/lpc43xx/lpc43_cgu.h
@@ -45,13 +45,9 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -66,7 +62,7 @@ extern "C"
  *
  ****************************************************************************/
 
-EXTERN void lpc43_pll0usbdisable(void);
+extern void lpc43_pll0usbdisable(void);
 
 /****************************************************************************
  * Name: lpc43_pll0usbenable
@@ -77,7 +73,7 @@ EXTERN void lpc43_pll0usbdisable(void);
  *
  ****************************************************************************/
 
-EXTERN void lpc43_pll0usbenable(void);
+extern void lpc43_pll0usbenable(void);
 
 /****************************************************************************
  * Name: lpc43_pll0usbconfig
@@ -87,7 +83,7 @@ EXTERN void lpc43_pll0usbenable(void);
  *
  ****************************************************************************/
 
-EXTERN void lpc43_pll0usbconfig(void);
+extern void lpc43_pll0usbconfig(void);
 
 /****************************************************************************
  * Name: lpc43_clockconfig
@@ -101,7 +97,6 @@ EXTERN void lpc43_pll0usbconfig(void);
 
 void lpc43_clockconfig(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/max326xx/max326_clockconfig.h 
b/arch/arm/src/max326xx/max326_clockconfig.h
index 23bbac91c84..51c6e757834 100644
--- a/arch/arm/src/max326xx/max326_clockconfig.h
+++ b/arch/arm/src/max326xx/max326_clockconfig.h
@@ -55,13 +55,9 @@
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -72,7 +68,7 @@ extern "C"
  * must be provided by MCU-specific logic.
  */
 
-EXTERN const struct clock_setup_s g_initial_clock_setup;
+extern const struct clock_setup_s g_initial_clock_setup;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -121,7 +117,6 @@ uint32_t max326_cpu_frequency(void);
 
 uint32_t max326_pclk_frequency(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/mcx-nxxx/nxxx_gpio.h 
b/arch/arm/src/mcx-nxxx/nxxx_gpio.h
index 5b2594bbc77..0596334ae85 100644
--- a/arch/arm/src/mcx-nxxx/nxxx_gpio.h
+++ b/arch/arm/src/mcx-nxxx/nxxx_gpio.h
@@ -214,20 +214,16 @@ typedef uint16_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Look-up table that maps GPIO1..GPIOn indexes into GPIO register base
  * addresses
  */
 
-EXTERN const uintptr_t g_gpio_base[];
+extern const uintptr_t g_gpio_base[];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -334,7 +330,6 @@ int nxxx_gpioirq_disable(gpio_pinset_t pinset);
 #  define nxxx_gpioirq_disable(pinset) 0
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/n32h7/n32_gpio.h b/arch/arm/src/n32h7/n32_gpio.h
index 338d7934e98..26efebc2bd3 100644
--- a/arch/arm/src/n32h7/n32_gpio.h
+++ b/arch/arm/src/n32h7/n32_gpio.h
@@ -231,18 +231,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[N32H7_NGPIO];
+extern const uint32_t g_gpiobase[N32H7_NGPIO];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -357,7 +353,6 @@ int n32_dumpgpio(uint32_t pinset, const char *msg);
 
 void n32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/rp23xx/rp23xx_pm.h b/arch/arm/src/rp23xx/rp23xx_pm.h
index ca37bc60464..051559d94e2 100644
--- a/arch/arm/src/rp23xx/rp23xx_pm.h
+++ b/arch/arm/src/rp23xx/rp23xx_pm.h
@@ -36,13 +36,9 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -125,7 +121,7 @@ void rp23xx_pm_pads_quiesce(void);
 #ifdef CONFIG_RP23XX_PM_SUSPEND
 #  define RP23XX_PM_RESUME_STACK_WORDS (CONFIG_IDLETHREAD_STACKSIZE / 4)
 
-EXTERN uint32_t g_pm_resume_stack[RP23XX_PM_RESUME_STACK_WORDS];
+extern uint32_t g_pm_resume_stack[RP23XX_PM_RESUME_STACK_WORDS];
 #endif
 
 /****************************************************************************
@@ -164,7 +160,6 @@ bool rp23xx_pm_resume_pending(void);
 void rp23xx_pm_resume(void);
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/s32k1xx/s32k1xx_clockconfig.h 
b/arch/arm/src/s32k1xx/s32k1xx_clockconfig.h
index ed4a40476aa..bfa32c25997 100644
--- a/arch/arm/src/s32k1xx/s32k1xx_clockconfig.h
+++ b/arch/arm/src/s32k1xx/s32k1xx_clockconfig.h
@@ -457,20 +457,16 @@ enum scg_system_clock_mode_e
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Data
  ****************************************************************************/
 
-EXTERN const unsigned int num_of_peripheral_clocks_0;
+extern const unsigned int num_of_peripheral_clocks_0;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -600,7 +596,6 @@ uint32_t s32k1xx_get_sysclk(enum scg_system_clock_type_e 
type);
 uint32_t s32k1xx_get_asnchfreq(enum clock_names_e clksrc,
                                enum scg_async_clock_type_e type);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/s32k1xx/s32k1xx_periphclocks.h 
b/arch/arm/src/s32k1xx/s32k1xx_periphclocks.h
index 939e5042598..370198d8578 100644
--- a/arch/arm/src/s32k1xx/s32k1xx_periphclocks.h
+++ b/arch/arm/src/s32k1xx/s32k1xx_periphclocks.h
@@ -197,13 +197,9 @@ struct peripheral_clock_config_s
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Clock name mappings.
@@ -214,7 +210,7 @@ extern "C"
  * clock name, then the corresponding value is PCC_INVALID_INDEX.
  */
 
-EXTERN const uint16_t g_clkname_mapping[];
+extern const uint16_t g_clkname_mapping[];
 
 /* Peripheral Features.
  *
@@ -223,7 +219,7 @@ EXTERN const uint16_t g_clkname_mapping[];
  * feature definitions above
  */
 
-EXTERN const uint8_t g_periph_features[];
+extern const uint8_t g_periph_features[];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -285,7 +281,6 @@ int s32k1xx_get_pclkfreq(enum clock_names_e clkname, 
uint32_t *frequency);
 
 void s32k1xx_pclk_enable(enum clock_names_e clkname, bool enable);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/s32k3xx/s32k3xx_periphclocks.h 
b/arch/arm/src/s32k3xx/s32k3xx_periphclocks.h
index 8d979b74d8f..4019fbcc4e9 100644
--- a/arch/arm/src/s32k3xx/s32k3xx_periphclocks.h
+++ b/arch/arm/src/s32k3xx/s32k3xx_periphclocks.h
@@ -159,13 +159,9 @@ struct peripheral_clock_config_s
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Clock name mappings.
@@ -176,7 +172,7 @@ extern "C"
  * clock name, then the corresponding value is PCC_INVALID_INDEX.
  */
 
-EXTERN const uint16_t g_clkname_mapping[];
+extern const uint16_t g_clkname_mapping[];
 
 /* Peripheral Features.
  *
@@ -185,7 +181,7 @@ EXTERN const uint16_t g_clkname_mapping[];
  * feature definitions above
  */
 
-EXTERN const uint8_t g_periph_features[];
+extern const uint8_t g_periph_features[];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -230,7 +226,6 @@ void s32k3xx_periphclocks(unsigned int count,
 
 int s32k3xx_get_pclkfreq(enum clock_names_e clkname, uint32_t *frequency);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/sam34/sam4s_nand.h b/arch/arm/src/sam34/sam4s_nand.h
index 24e5bfc002c..fcfce2b319c 100644
--- a/arch/arm/src/sam34/sam4s_nand.h
+++ b/arch/arm/src/sam34/sam4s_nand.h
@@ -109,18 +109,14 @@ struct sam_nandcs_s
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* NAND global state */
 
-EXTERN struct sam_nand_s g_nand;
+extern struct sam_nand_s g_nand;
 
 /****************************************************************************
  * Name: sam_nand_initialize
@@ -172,7 +168,6 @@ struct mtd_dev_s *sam_nand_initialize(int cs);
 
 int board_nandflash_config(int cs);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/sama5/sam_nand.h b/arch/arm/src/sama5/sam_nand.h
index 583f618a65a..5d3aab94c84 100644
--- a/arch/arm/src/sama5/sam_nand.h
+++ b/arch/arm/src/sama5/sam_nand.h
@@ -361,18 +361,14 @@ struct sam_nand_s
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* NAND global state */
 
-EXTERN struct sam_nand_s g_nand;
+extern struct sam_nand_s g_nand;
 
 /****************************************************************************
  * Public Functions Prototypes
@@ -627,7 +623,6 @@ uint16_t nand_get_trimpage(struct sam_nandcs_s *priv)
 #  define nand_get_trimpage(p) (0)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/sama5/sam_pmecc.h b/arch/arm/src/sama5/sam_pmecc.h
index 35ab5797150..633bb36cebf 100644
--- a/arch/arm/src/sama5/sam_pmecc.h
+++ b/arch/arm/src/sama5/sam_pmecc.h
@@ -184,13 +184,9 @@
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Gallois Field tables for 512 bytes sectors. First raw is "index_of" and
@@ -209,8 +205,8 @@ extern "C"
 #  define pmecc_gf1024 ((const int16_t 
*)CONFIG_SAMA5_PMECC_GALOIS_TABLE1024_ROMADDR)
 
 #else
-  EXTERN const uint16_t pmecc_gf512[2][PMECC_GF_SIZEOF_512];
-  EXTERN const uint16_t pmecc_gf1024[2][PMECC_GF_SIZEOF_1024];
+  extern const uint16_t pmecc_gf512[2][PMECC_GF_SIZEOF_512];
+  extern const uint16_t pmecc_gf1024[2][PMECC_GF_SIZEOF_1024];
 #endif
 
 /****************************************************************************
@@ -375,7 +371,6 @@ uint32_t pmecc_get_pagesize(void);
 void pmecc_buildgf(uint32_t mm, int16_t *indexof, int16_t *alphato);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/samd2l2/sam_usart.h b/arch/arm/src/samd2l2/sam_usart.h
index 0a2d93d8592..fdc3e08e88b 100644
--- a/arch/arm/src/samd2l2/sam_usart.h
+++ b/arch/arm/src/samd2l2/sam_usart.h
@@ -143,46 +143,41 @@ bool usart_syncbusy(const struct sam_usart_config_s * 
const config)
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #ifdef SAMD2L2_HAVE_USART0
-EXTERN const struct sam_usart_config_s g_usart0config;
+extern const struct sam_usart_config_s g_usart0config;
 #endif
 
 #ifdef SAMD2L2_HAVE_USART1
-EXTERN const struct sam_usart_config_s g_usart1config;
+extern const struct sam_usart_config_s g_usart1config;
 #endif
 
 #ifdef SAMD2L2_HAVE_USART2
-EXTERN const struct sam_usart_config_s g_usart2config;
+extern const struct sam_usart_config_s g_usart2config;
 #endif
 
 #ifdef SAMD2L2_HAVE_USART3
-EXTERN const struct sam_usart_config_s g_usart3config;
+extern const struct sam_usart_config_s g_usart3config;
 #endif
 
 #ifdef SAMD2L2_HAVE_USART4
-EXTERN const struct sam_usart_config_s g_usart4config;
+extern const struct sam_usart_config_s g_usart4config;
 #endif
 
 #ifdef SAMD2L2_HAVE_USART5
-EXTERN const struct sam_usart_config_s g_usart5config;
+extern const struct sam_usart_config_s g_usart5config;
 #endif
 
-EXTERN const struct sam_usart_config_s *g_usartconfig[SAMD2L2_NSERCOM];
+extern const struct sam_usart_config_s *g_usartconfig[SAMD2L2_NSERCOM];
 
 /****************************************************************************
  * Public Functions Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/samd5e5/sam_usart.h b/arch/arm/src/samd5e5/sam_usart.h
index 833ea47d932..d05d75acf5e 100644
--- a/arch/arm/src/samd5e5/sam_usart.h
+++ b/arch/arm/src/samd5e5/sam_usart.h
@@ -119,54 +119,49 @@ bool usart_syncbusy(const struct sam_usart_config_s * 
const config)
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #ifdef SAMD5E5_HAVE_USART0
-EXTERN const struct sam_usart_config_s g_usart0config;
+extern const struct sam_usart_config_s g_usart0config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART1
-EXTERN const struct sam_usart_config_s g_usart1config;
+extern const struct sam_usart_config_s g_usart1config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART2
-EXTERN const struct sam_usart_config_s g_usart2config;
+extern const struct sam_usart_config_s g_usart2config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART3
-EXTERN const struct sam_usart_config_s g_usart3config;
+extern const struct sam_usart_config_s g_usart3config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART4
-EXTERN const struct sam_usart_config_s g_usart4config;
+extern const struct sam_usart_config_s g_usart4config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART5
-EXTERN const struct sam_usart_config_s g_usart5config;
+extern const struct sam_usart_config_s g_usart5config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART6
-EXTERN const struct sam_usart_config_s g_usart6config;
+extern const struct sam_usart_config_s g_usart6config;
 #endif
 
 #ifdef SAMD5E5_HAVE_USART7
-EXTERN const struct sam_usart_config_s g_usart7config;
+extern const struct sam_usart_config_s g_usart7config;
 #endif
 
-EXTERN const struct sam_usart_config_s *g_usartconfig[SAMD5E5_NSERCOM];
+extern const struct sam_usart_config_s *g_usartconfig[SAMD5E5_NSERCOM];
 
 /****************************************************************************
  * Public Functions Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/samv7/sam_gpio.h b/arch/arm/src/samv7/sam_gpio.h
index 0f3a83b8732..249441ee9bf 100644
--- a/arch/arm/src/samv7/sam_gpio.h
+++ b/arch/arm/src/samv7/sam_gpio.h
@@ -181,16 +181,12 @@ typedef uint32_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN const uintptr_t g_portbase[SAMV7_NPIO];
+extern const uintptr_t g_portbase[SAMV7_NPIO];
 
 /****************************************************************************
  * Inline Functions
@@ -369,7 +365,6 @@ int sam_dumpgpio(uint32_t pinset, const char *msg);
 #  define sam_dumpgpio(p,m)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/stm32f7/stm32_dtcm.h 
b/arch/arm/src/stm32f7/stm32_dtcm.h
index 42997245544..82b097a4ecb 100644
--- a/arch/arm/src/stm32f7/stm32_dtcm.h
+++ b/arch/arm/src/stm32f7/stm32_dtcm.h
@@ -102,20 +102,16 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN struct mm_heap_s *g_dtcm_heap;
+extern struct mm_heap_s *g_dtcm_heap;
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/stm32f7/stm32_gpio.h 
b/arch/arm/src/stm32f7/stm32_gpio.h
index 97fcbc8dfaf..cd2cef76999 100644
--- a/arch/arm/src/stm32f7/stm32_gpio.h
+++ b/arch/arm/src/stm32f7/stm32_gpio.h
@@ -229,18 +229,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NGPIO];
+extern const uint32_t g_gpiobase[STM32_NGPIO];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -367,7 +363,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 #  define stm32_dumpgpio(p,m)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/stm32h7/stm32_dtcm.h 
b/arch/arm/src/stm32h7/stm32_dtcm.h
index c55ded32e57..d1c5e770028 100644
--- a/arch/arm/src/stm32h7/stm32_dtcm.h
+++ b/arch/arm/src/stm32h7/stm32_dtcm.h
@@ -94,20 +94,16 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN struct mm_heap_s *g_dtcm_heap;
+extern struct mm_heap_s *g_dtcm_heap;
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm/src/stm32h7/stm32_gpio.h 
b/arch/arm/src/stm32h7/stm32_gpio.h
index d3f3943b61d..de31ef49f70 100644
--- a/arch/arm/src/stm32h7/stm32_gpio.h
+++ b/arch/arm/src/stm32h7/stm32_gpio.h
@@ -263,18 +263,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NGPIO];
+extern const uint32_t g_gpiobase[STM32_NGPIO];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -416,7 +412,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/stm32l4/stm32l4_gpio.h 
b/arch/arm/src/stm32l4/stm32l4_gpio.h
index fd79b6b232e..cc90183ec20 100644
--- a/arch/arm/src/stm32l4/stm32l4_gpio.h
+++ b/arch/arm/src/stm32l4/stm32l4_gpio.h
@@ -233,18 +233,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NPORTS];
+extern const uint32_t g_gpiobase[STM32_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -360,7 +356,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/stm32n6/stm32_gpio.h 
b/arch/arm/src/stm32n6/stm32_gpio.h
index 64ad271b3f1..1d1e06466f5 100644
--- a/arch/arm/src/stm32n6/stm32_gpio.h
+++ b/arch/arm/src/stm32n6/stm32_gpio.h
@@ -232,18 +232,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NPORTS];
+extern const uint32_t g_gpiobase[STM32_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -308,7 +304,6 @@ void stm32_gpiowrite(uint32_t pinset, bool value);
 
 bool stm32_gpioread(uint32_t pinset);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/stm32wb/stm32wb_gpio.h 
b/arch/arm/src/stm32wb/stm32wb_gpio.h
index 3e2a3f73e1e..4f56260779f 100644
--- a/arch/arm/src/stm32wb/stm32wb_gpio.h
+++ b/arch/arm/src/stm32wb/stm32wb_gpio.h
@@ -239,18 +239,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NPORTS];
+extern const uint32_t g_gpiobase[STM32_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -365,7 +361,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm/src/stm32wl5/stm32wl5_gpio.h 
b/arch/arm/src/stm32wl5/stm32wl5_gpio.h
index 0d0093baef6..168c161ca3d 100644
--- a/arch/arm/src/stm32wl5/stm32wl5_gpio.h
+++ b/arch/arm/src/stm32wl5/stm32wl5_gpio.h
@@ -226,18 +226,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO block */
 
-EXTERN const uint32_t g_gpiobase[STM32_NPORTS];
+extern const uint32_t g_gpiobase[STM32_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -352,7 +348,6 @@ int stm32_dumpgpio(uint32_t pinset, const char *msg);
 
 void stm32_gpioinit(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/arm64/src/common/arm64_internal.h 
b/arch/arm64/src/common/arm64_internal.h
index 52f53be16a7..db9490b1b41 100644
--- a/arch/arm64/src/common/arm64_internal.h
+++ b/arch/arm64/src/common/arm64_internal.h
@@ -128,11 +128,8 @@ typedef void (*up_vector_t)(void);
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #define INIT_STACK_DEFINE(sym, size) \
@@ -144,10 +141,10 @@ extern "C"
      aligned_data(STACK_ALIGNMENT) sym[n][size]
 
 #define INIT_STACK_DEFINE_EXTERN(sym, size) \
-    EXTERN char sym[size]
+    extern char sym[size]
 
 #define INIT_STACK_ARRAY_DEFINE_EXTERN(sym, n, size) \
-    EXTERN char sym[n][size]
+    extern char sym[n][size]
 
 #define STACK_PTR_TO_FRAME(type, ptr) \
     (type *)STACKFRAME_ALIGN_DOWN((uintptr_t)(ptr) - sizeof(type))
@@ -186,8 +183,8 @@ INIT_STACK_DEFINE_EXTERN(g_interrupt_fiq_stack, 
INTSTACK_SIZE);
 /* Address of the saved user stack pointer */
 
 #if CONFIG_ARCH_INTERRUPTSTACK > 3
-EXTERN uint8_t g_intstackalloc[]; /* Allocated stack base */
-EXTERN uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
+extern uint8_t g_intstackalloc[]; /* Allocated stack base */
+extern uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
 #else
 #  error CONFIG_ARCH_INTERRUPTSTACK must be defined (4096 at least) at arm64
 #endif
@@ -223,20 +220,20 @@ EXTERN uint8_t g_intstacktop[];   /* Initial top of 
interrupt stack */
  * please check dramboot.ld at specified platform for more detail
  */
 
-EXTERN uint8_t _stext[];            /* Start of .text */
-EXTERN uint8_t _etext[];            /* End of .text */
-EXTERN uint8_t _sztext[];           /* Size of .text */
-EXTERN uint8_t _srodata[];          /* Start of .rodata */
-EXTERN uint8_t _erodata[];          /* End+1 of .rodata */
-EXTERN uint8_t _szrodata[];         /* Size of .rodata */
-EXTERN const uint8_t _eronly[];     /* End+1 of read only section (.text + 
.rodata) */
-EXTERN uint8_t _sdata[];            /* Start of .data */
-EXTERN uint8_t _edata[];            /* End+1 of .data */
-EXTERN uint8_t _sbss[];             /* Start of .bss */
-EXTERN uint8_t _ebss[];             /* End+1 of .bss */
-EXTERN uint8_t _szdata[];           /* Size of data(.data + .bss) */
-EXTERN uint8_t _e_initstack[];      /* End+1 of .initstack */
-EXTERN uint8_t g_idle_topstack[];   /* End+1 of heap */
+extern uint8_t _stext[];            /* Start of .text */
+extern uint8_t _etext[];            /* End of .text */
+extern uint8_t _sztext[];           /* Size of .text */
+extern uint8_t _srodata[];          /* Start of .rodata */
+extern uint8_t _erodata[];          /* End+1 of .rodata */
+extern uint8_t _szrodata[];         /* Size of .rodata */
+extern const uint8_t _eronly[];     /* End+1 of read only section (.text + 
.rodata) */
+extern uint8_t _sdata[];            /* Start of .data */
+extern uint8_t _edata[];            /* End+1 of .data */
+extern uint8_t _sbss[];             /* Start of .bss */
+extern uint8_t _ebss[];             /* End+1 of .bss */
+extern uint8_t _szdata[];           /* Size of data(.data + .bss) */
+extern uint8_t _e_initstack[];      /* End+1 of .initstack */
+extern uint8_t g_idle_topstack[];   /* End+1 of heap */
 
 #  define _START_TEXT  _stext
 #  define _END_TEXT    _etext
@@ -392,7 +389,6 @@ void arm64_stack_color(void *stackbase, size_t nbytes);
 void arm64_enable_dbgmonitor(void);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/arm64/src/imx9/imx9_gpio.h b/arch/arm64/src/imx9/imx9_gpio.h
index 235ff5eaaed..a22451e3d04 100644
--- a/arch/arm64/src/imx9/imx9_gpio.h
+++ b/arch/arm64/src/imx9/imx9_gpio.h
@@ -212,20 +212,16 @@ typedef uint16_t gpio_pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Look-up table that maps GPIO1..GPIOn indexes into GPIO register base
  * addresses
  */
 
-EXTERN const uintptr_t g_gpio_base[];
+extern const uintptr_t g_gpio_base[];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -332,7 +328,6 @@ int imx9_gpioirq_disable(gpio_pinset_t pinset);
 #  define imx9_gpioirq_disable(pinset) 0
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/avr/include/irq.h b/arch/avr/include/irq.h
index fddb5c1a37b..c1d1c3a5df9 100644
--- a/arch/avr/include/irq.h
+++ b/arch/avr/include/irq.h
@@ -69,11 +69,8 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -86,9 +83,9 @@ extern "C"
  */
 
 #ifdef CONFIG_ARCH_FAMILY_AVR32
-EXTERN volatile uint32_t *g_current_regs;
+extern volatile uint32_t *g_current_regs;
 #else
-EXTERN volatile uint8_t *g_current_regs;
+extern volatile uint8_t *g_current_regs;
 #endif
 
 /****************************************************************************
@@ -139,7 +136,6 @@ static inline_function void up_set_current_regs(FAR uint8_t 
*regs)
 #define up_getusrsp(regs) \
   ((uintptr_t)((uint8_t *)(regs))[REG_R13])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/avr/src/avrdx/avrdx_gpio.h b/arch/avr/src/avrdx/avrdx_gpio.h
index 172ac7dc776..e1dcf3da39e 100644
--- a/arch/avr/src/avrdx/avrdx_gpio.h
+++ b/arch/avr/src/avrdx/avrdx_gpio.h
@@ -66,14 +66,11 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN const IOBJ uint8_t avrdx_gpio_irq_vectors[];
+extern const IOBJ uint8_t avrdx_gpio_irq_vectors[];
 
 /****************************************************************************
  * Inline Functions
@@ -146,7 +143,6 @@ int avrdx_irq_detach_gpio_mux(uint8_t port_idx, uint8_t 
pins,
                               bool keep_handler);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/avr/src/avrdx/avrdx_serial.h 
b/arch/avr/src/avrdx/avrdx_serial.h
index 27ec7c52998..aee5b2b91e8 100644
--- a/arch/avr/src/avrdx/avrdx_serial.h
+++ b/arch/avr/src/avrdx/avrdx_serial.h
@@ -76,21 +76,17 @@ struct avrdx_uart_priv_s
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #ifdef CONFIG_MCU_SERIAL
 
-EXTERN const IOBJ uint8_t avrdx_usart_ports[];
-EXTERN const IOBJ uint8_t avrdx_usart_tx_pins[];
-EXTERN const IOBJ uint8_t avrdx_usart_portmux_bits[];
-EXTERN const IOBJ uint8_t avrdx_usart_portmux_masks[];
+extern const IOBJ uint8_t avrdx_usart_ports[];
+extern const IOBJ uint8_t avrdx_usart_tx_pins[];
+extern const IOBJ uint8_t avrdx_usart_portmux_bits[];
+extern const IOBJ uint8_t avrdx_usart_portmux_masks[];
 
 #endif
 
@@ -133,5 +129,9 @@ void avrdx_usart_reset(struct avrdx_uart_priv_s *priv);
 void avrdx_usart_configure(struct avrdx_uart_priv_s *priv);
 #endif
 
+#if defined(__cplusplus)
+}
+#endif
+
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_AVR_SRC_AVRDX_AVRDX_SERIAL_H */
diff --git a/arch/ceva/include/arch.h b/arch/ceva/include/arch.h
index e1371c1cbc9..6fd8682ce04 100644
--- a/arch/ceva/include/arch.h
+++ b/arch/ceva/include/arch.h
@@ -92,16 +92,12 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN struct mm_heap_s *const g_mm_heap[];
+extern struct mm_heap_s *const g_mm_heap[];
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/ceva/include/irq.h b/arch/ceva/include/irq.h
index 0952d126b11..fcf2a30ae75 100644
--- a/arch/ceva/include/irq.h
+++ b/arch/ceva/include/irq.h
@@ -88,11 +88,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* g_current_regs[] holds a references to the current interrupt level
@@ -105,7 +102,7 @@ extern "C"
  * such value for each processor that can receive an interrupt.
  */
 
-EXTERN uint32_t *volatile g_current_regs[CONFIG_SMP_NCPUS];
+extern uint32_t *volatile g_current_regs[CONFIG_SMP_NCPUS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -182,7 +179,6 @@ static inline_function bool up_interrupt_context(void)
 #define up_getusrsp(regs) \
     ((uintptr_t)((uint32_t*)(regs))[REG_SP])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/ceva/src/common/ceva_internal.h 
b/arch/ceva/src/common/ceva_internal.h
index d43747ffd7d..3630678c822 100644
--- a/arch/ceva/src/common/ceva_internal.h
+++ b/arch/ceva/src/common/ceva_internal.h
@@ -107,11 +107,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* This is the beginning of heap as provided from up_head.S.
@@ -120,71 +117,71 @@ extern "C"
  * CONFIG_RAM_END
  */
 
-EXTERN void *g_idle_basestack;
-EXTERN void *g_idle_topstack;
+extern void *g_idle_basestack;
+extern void *g_idle_topstack;
 
 /* Address of the interrupt stack pointer */
 
-EXTERN uint8_t g_intstackalloc[]; /* Allocated stack base */
-EXTERN uint8_t g_intstackbase[];  /* Initial top of interrupt stack */
+extern uint8_t g_intstackalloc[]; /* Allocated stack base */
+extern uint8_t g_intstackbase[];  /* Initial top of interrupt stack */
 
 /* These symbols are setup by the linker script. */
 
 /* Start of .text */
 
-EXTERN const uint8_t _stext[];
-EXTERN const uint8_t _stext2[];
-EXTERN const uint8_t _stext3[];
-EXTERN const uint8_t _stext4[];
+extern const uint8_t _stext[];
+extern const uint8_t _stext2[];
+extern const uint8_t _stext3[];
+extern const uint8_t _stext4[];
 
 /* End+1 of .text */
 
-EXTERN const uint8_t _etext[];
-EXTERN const uint8_t _etext2[];
-EXTERN const uint8_t _etext3[];
-EXTERN const uint8_t _etext4[];
+extern const uint8_t _etext[];
+extern const uint8_t _etext2[];
+extern const uint8_t _etext3[];
+extern const uint8_t _etext4[];
 
 /* End+1 of read only section (.text + .rodata) */
 
-EXTERN const uint8_t _eronly[];
-EXTERN const uint8_t _eronly2[];
-EXTERN const uint8_t _eronly3[];
-EXTERN const uint8_t _eronly4[];
+extern const uint8_t _eronly[];
+extern const uint8_t _eronly2[];
+extern const uint8_t _eronly3[];
+extern const uint8_t _eronly4[];
 
 /* Start of .data */
 
-EXTERN uint8_t _sdata[];
-EXTERN uint8_t _sdata2[];
-EXTERN uint8_t _sdata3[];
-EXTERN uint8_t _sdata4[];
+extern uint8_t _sdata[];
+extern uint8_t _sdata2[];
+extern uint8_t _sdata3[];
+extern uint8_t _sdata4[];
 
 /* End+1 of .data */
 
-EXTERN uint8_t _edata[];
-EXTERN uint8_t _edata2[];
-EXTERN uint8_t _edata3[];
-EXTERN uint8_t _edata4[];
+extern uint8_t _edata[];
+extern uint8_t _edata2[];
+extern uint8_t _edata3[];
+extern uint8_t _edata4[];
 
 /* Start of .bss */
 
-EXTERN uint8_t _sbss[];
-EXTERN uint8_t _sbss2[];
-EXTERN uint8_t _sbss3[];
-EXTERN uint8_t _sbss4[];
+extern uint8_t _sbss[];
+extern uint8_t _sbss2[];
+extern uint8_t _sbss3[];
+extern uint8_t _sbss4[];
 
 /* End+1 of .bss */
 
-EXTERN uint8_t _ebss[];
-EXTERN uint8_t _ebss2[];
-EXTERN uint8_t _ebss3[];
-EXTERN uint8_t _ebss4[];
+extern uint8_t _ebss[];
+extern uint8_t _ebss2[];
+extern uint8_t _ebss3[];
+extern uint8_t _ebss4[];
 
 /* End+1 of the memory */
 
-EXTERN uint8_t _eheap[];
-EXTERN uint8_t _eheap2[];
-EXTERN uint8_t _eheap3[];
-EXTERN uint8_t _eheap4[];
+extern uint8_t _eheap[];
+extern uint8_t _eheap2[];
+extern uint8_t _eheap3[];
+extern uint8_t _eheap4[];
 
 #endif /* __ASSEMBLY__ */
 
@@ -308,7 +305,6 @@ void ceva_color_intstack(void);
 #  define ceva_color_intstack()
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/hc/include/irq.h b/arch/hc/include/irq.h
index 583776fd47c..32be18aaadb 100644
--- a/arch/hc/include/irq.h
+++ b/arch/hc/include/irq.h
@@ -70,11 +70,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -102,7 +99,7 @@ static inline_function uint16_t up_getsp(void)
  * structure.  It is non-NULL only during interrupt processing.
  */
 
-EXTERN volatile uint8_t *g_current_regs;
+extern volatile uint8_t *g_current_regs;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -147,7 +144,6 @@ static inline_function uintptr_t up_getusrsp(void *regs)
  * Public Function Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/mips/include/irq.h b/arch/mips/include/irq.h
index 1e6724fbb2f..8e3f7114564 100644
--- a/arch/mips/include/irq.h
+++ b/arch/mips/include/irq.h
@@ -72,11 +72,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -110,7 +107,7 @@ static inline_function uint32_t up_getsp(void)
  * such value for each processor that can receive an interrupt.
  */
 
-EXTERN volatile uint32_t *g_current_regs;
+extern volatile uint32_t *g_current_regs;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -155,7 +152,6 @@ static inline_function void up_set_current_regs(uint32_t 
*regs)
 #define up_getusrsp(regs) \
     ((uintptr_t)((uint32_t*)(regs))[REG_SP])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/mips/src/jz4780/jz4780_gpio.h 
b/arch/mips/src/jz4780/jz4780_gpio.h
index 7e35a411e88..b5ceb83edf1 100644
--- a/arch/mips/src/jz4780/jz4780_gpio.h
+++ b/arch/mips/src/jz4780/jz4780_gpio.h
@@ -159,13 +159,9 @@ typedef uint32_t pinset_t;
  * Public Data
  *****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* This table can be used to map a port number to a IOPORT base address.  For
@@ -173,7 +169,7 @@ extern "C"
  * etc.
  */
 
-EXTERN const uintptr_t g_gpiobase[CHIP_NPORTS];
+extern const uintptr_t g_gpiobase[CHIP_NPORTS];
 
 /*****************************************************************************
  * Public Function Prototypes
@@ -301,7 +297,6 @@ void jz4780_dumpgpio(uint32_t pinset, const char *msg);
 #  define jz4780_dumpgpio(p,m)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/mips/src/pic32mz/pic32mz_gpio.h 
b/arch/mips/src/pic32mz/pic32mz_gpio.h
index b827c9c2525..12c0c0d3b26 100644
--- a/arch/mips/src/pic32mz/pic32mz_gpio.h
+++ b/arch/mips/src/pic32mz/pic32mz_gpio.h
@@ -172,13 +172,9 @@ typedef uint32_t pinset_t;
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* This table can be used to map a port number to a IOPORT base address.  For
@@ -186,7 +182,7 @@ extern "C"
  * etc.
  */
 
-EXTERN const uintptr_t g_gpiobase[CHIP_NPORTS];
+extern const uintptr_t g_gpiobase[CHIP_NPORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -314,7 +310,6 @@ void pic32mz_dumpgpio(pinset_t pinset, const char *msg);
 #  define pic32mz_dumpgpio(p,m)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/misoc/include/irq.h b/arch/misoc/include/irq.h
index fb72179a759..872718a6f52 100644
--- a/arch/misoc/include/irq.h
+++ b/arch/misoc/include/irq.h
@@ -52,11 +52,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -82,7 +79,7 @@ static inline_function uint32_t up_getsp(void)
  * structure.  It is non-NULL only during interrupt processing.
  */
 
-EXTERN volatile uint32_t *g_current_regs;
+extern volatile uint32_t *g_current_regs;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -121,7 +118,6 @@ irqstate_t up_irq_save(void);
 irqstate_t up_irq_enable(void);
 void up_irq_restore(irqstate_t flags);
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/or1k/include/irq.h b/arch/or1k/include/irq.h
index 439e8eccca8..6a5030c9e63 100644
--- a/arch/or1k/include/irq.h
+++ b/arch/or1k/include/irq.h
@@ -79,11 +79,8 @@ static inline_function uint32_t up_getsp(void)
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* g_current_regs[] holds a references to the current interrupt level
@@ -96,7 +93,7 @@ extern "C"
  * such value for each processor that can receive an interrupt.
  */
 
-EXTERN volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
+extern volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -174,7 +171,6 @@ static inline_function bool up_interrupt_context(void)
 #define up_getusrsp(regs) \
     ((uintptr_t)((uint32_t *)(regs))[REG_R13])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/or1k/src/common/or1k_internal.h 
b/arch/or1k/src/common/or1k_internal.h
index 2eaade2fe26..d359863f2f1 100644
--- a/arch/or1k/src/common/or1k_internal.h
+++ b/arch/or1k/src/common/or1k_internal.h
@@ -114,11 +114,8 @@ typedef void (*up_vector_t)(void);
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* This is the beginning of heap as provided from up_head.S.
@@ -127,24 +124,24 @@ extern "C"
  * CONFIG_RAM_END
  */
 
-EXTERN const uint32_t g_idle_topstack;
+extern const uint32_t g_idle_topstack;
 
 /* Address of the saved user stack pointer */
 
 #if CONFIG_ARCH_INTERRUPTSTACK > 3
-EXTERN uint8_t g_intstackalloc[]; /* Allocated stack base */
-EXTERN uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
+extern uint8_t g_intstackalloc[]; /* Allocated stack base */
+extern uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
 #endif
 
 /* These symbols are setup by the linker script. */
 
-EXTERN uint8_t _stext[];           /* Start of .text */
-EXTERN uint8_t _etext[];           /* End_1 of .text + .rodata */
-EXTERN const uint8_t _eronly[];    /* End+1 of read only section (.text + 
.rodata) */
-EXTERN uint8_t _sdata[];           /* Start of .data */
-EXTERN uint8_t _edata[];           /* End+1 of .data */
-EXTERN uint8_t _sbss[];            /* Start of .bss */
-EXTERN uint8_t _ebss[];            /* End+1 of .bss */
+extern uint8_t _stext[];           /* Start of .text */
+extern uint8_t _etext[];           /* End_1 of .text + .rodata */
+extern const uint8_t _eronly[];    /* End+1 of read only section (.text + 
.rodata) */
+extern uint8_t _sdata[];           /* Start of .data */
+extern uint8_t _edata[];           /* End+1 of .data */
+extern uint8_t _sbss[];            /* Start of .bss */
+extern uint8_t _ebss[];            /* End+1 of .bss */
 
 /* Sometimes, functions must be executed from RAM.  In this case, the
  * following macro may be used (with GCC!) to specify a function that will
@@ -168,9 +165,9 @@ EXTERN uint8_t _ebss[];            /* End+1 of .bss */
  * functions from flash to RAM.
  */
 
-EXTERN const uint32_t _framfuncs; /* Copy source address in FLASH */
-EXTERN uint32_t _sramfuncs;       /* Copy destination start address in RAM */
-EXTERN uint32_t _eramfuncs;       /* Copy destination end address in RAM */
+extern const uint32_t _framfuncs; /* Copy source address in FLASH */
+extern uint32_t _sramfuncs;       /* Copy destination start address in RAM */
+extern uint32_t _eramfuncs;       /* Copy destination end address in RAM */
 
 #else /* CONFIG_ARCH_RAMFUNCS */
 
@@ -320,7 +317,6 @@ void or1k_color_intstack(void);
 #  define or1k_color_intstack()
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/renesas/include/irq.h b/arch/renesas/include/irq.h
index b00e2089748..334dd69f223 100644
--- a/arch/renesas/include/irq.h
+++ b/arch/renesas/include/irq.h
@@ -55,11 +55,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -71,7 +68,7 @@ extern "C"
  * interrupt processing.
  */
 
-EXTERN volatile uint32_t *g_current_regs;
+extern volatile uint32_t *g_current_regs;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -102,7 +99,6 @@ static inline_function void up_set_current_regs(uint32_t 
*regs)
 
 #define up_interrupt_context() (up_current_regs() != NULL)
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/risc-v/include/bl602/irq.h b/arch/risc-v/include/bl602/irq.h
index ed6c2a7dad1..db4da979bd1 100644
--- a/arch/risc-v/include/bl602/irq.h
+++ b/arch/risc-v/include/bl602/irq.h
@@ -187,22 +187,17 @@
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN irqstate_t up_irq_enable(void);
+extern irqstate_t up_irq_enable(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/include/irq.h b/arch/risc-v/include/irq.h
index 3794009d3bf..08ad9395489 100644
--- a/arch/risc-v/include/irq.h
+++ b/arch/risc-v/include/irq.h
@@ -717,18 +717,14 @@ static inline_function uintptr_t up_getsp(void)
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* g_interrupt_context store irq status */
 
-EXTERN volatile bool g_interrupt_context[CONFIG_SMP_NCPUS];
+extern volatile bool g_interrupt_context[CONFIG_SMP_NCPUS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -946,7 +942,6 @@ noinstrument_function static inline_function bool 
up_interrupt_context(void)
 #define up_getusrsp(regs) \
     (((uintptr_t*)(regs))[REG_SP])
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/bl602/bl602_lowputc.h 
b/arch/risc-v/src/bl602/bl602_lowputc.h
index 9451ea67733..92a0f705c3d 100644
--- a/arch/risc-v/src/bl602/bl602_lowputc.h
+++ b/arch/risc-v/src/bl602/bl602_lowputc.h
@@ -48,20 +48,15 @@ struct uart_config_s
   uint8_t  parity;    /* Parity selection:  0=none, 1=odd, 2=even */
 };
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN void bl602_lowsetup(void);
+extern void bl602_lowsetup(void);
 
-EXTERN void bl602_uart_configure(const struct uart_config_s *config);
+extern void bl602_uart_configure(const struct uart_config_s *config);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/c906/c906_clockconfig.h 
b/arch/risc-v/src/c906/c906_clockconfig.h
index a20e5c066e5..e1f2e22a9ee 100644
--- a/arch/risc-v/src/c906/c906_clockconfig.h
+++ b/arch/risc-v/src/c906/c906_clockconfig.h
@@ -44,25 +44,21 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint64_t c906_get_cpuclk(void);
-EXTERN uint64_t c906_get_pll0clk(void);
-EXTERN void c906_clockconfig(void);
+extern uint64_t c906_get_cpuclk(void);
+extern uint64_t c906_get_pll0clk(void);
+extern void c906_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_C906_C906_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/c906/c906_lowputc.h 
b/arch/risc-v/src/c906/c906_lowputc.h
index 15e671f0885..cd4551d0c24 100644
--- a/arch/risc-v/src/c906/c906_lowputc.h
+++ b/arch/risc-v/src/c906/c906_lowputc.h
@@ -37,22 +37,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: c906_lowsetup
  ****************************************************************************/
 
-EXTERN void c906_lowsetup(void);
+extern void c906_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/common/riscv_common_memorymap.h 
b/arch/risc-v/src/common/riscv_common_memorymap.h
index cba0929e583..be39f1d25dd 100644
--- a/arch/risc-v/src/common/riscv_common_memorymap.h
+++ b/arch/risc-v/src/common/riscv_common_memorymap.h
@@ -55,17 +55,13 @@
  * Public Types
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #ifndef __ASSEMBLY__
-EXTERN uintptr_t g_idle_topstack;
+extern uintptr_t g_idle_topstack;
 
 /* Address of per-cpu idle stack base */
 
@@ -75,27 +71,26 @@ EXTERN uintptr_t g_idle_topstack;
 /* Address of the saved user stack pointer */
 
 #if CONFIG_ARCH_INTERRUPTSTACK > 15
-EXTERN uint8_t g_intstackalloc[]; /* Allocated stack base */
-EXTERN uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
+extern uint8_t g_intstackalloc[]; /* Allocated stack base */
+extern uint8_t g_intstacktop[];   /* Initial top of interrupt stack */
 #endif
 
 /* These symbols are setup by the linker script. */
 
-EXTERN uint8_t _stext[];           /* Start of .text */
-EXTERN uint8_t _etext[];           /* End_1 of .text + .rodata */
-EXTERN const uint8_t _eronly[];    /* End+1 of read only section (.text + 
.rodata) */
-EXTERN uint8_t _sdata[];           /* Start of .data */
-EXTERN uint8_t _edata[];           /* End+1 of .data */
-EXTERN uint8_t _sbss[];            /* Start of .bss */
-EXTERN uint8_t _ebss[];            /* End+1 of .bss */
-EXTERN uint8_t _stdata[];          /* Start of .tdata */
-EXTERN uint8_t _etdata[];          /* End+1 of .tdata */
-EXTERN uint8_t _stbss[];           /* Start of .tbss */
-EXTERN uint8_t _etbss[];           /* End+1 of .tbss */
+extern uint8_t _stext[];           /* Start of .text */
+extern uint8_t _etext[];           /* End_1 of .text + .rodata */
+extern const uint8_t _eronly[];    /* End+1 of read only section (.text + 
.rodata) */
+extern uint8_t _sdata[];           /* Start of .data */
+extern uint8_t _edata[];           /* End+1 of .data */
+extern uint8_t _sbss[];            /* Start of .bss */
+extern uint8_t _ebss[];            /* End+1 of .bss */
+extern uint8_t _stdata[];          /* Start of .tdata */
+extern uint8_t _etdata[];          /* End+1 of .tdata */
+extern uint8_t _stbss[];           /* Start of .tbss */
+extern uint8_t _etbss[];           /* End+1 of .tbss */
 
 #endif /* __ASSEMBLY__ */
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/risc-v/src/eic7700x/eic7700x_clk.h 
b/arch/risc-v/src/eic7700x/eic7700x_clk.h
index 6302b39510f..e2c9bcec438 100644
--- a/arch/risc-v/src/eic7700x/eic7700x_clk.h
+++ b/arch/risc-v/src/eic7700x/eic7700x_clk.h
@@ -93,16 +93,13 @@ struct eic7700x_clk_mux_s
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN const struct clk_ops_s g_eic7700x_clk_pll_ops;
-EXTERN const struct clk_ops_s g_eic7700x_clk_div_ops;
-EXTERN const struct clk_ops_s g_eic7700x_clk_mux_ops;
+extern const struct clk_ops_s g_eic7700x_clk_pll_ops;
+extern const struct clk_ops_s g_eic7700x_clk_div_ops;
+extern const struct clk_ops_s g_eic7700x_clk_mux_ops;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -141,7 +138,6 @@ int eic7700x_clk_initialize(void);
 
 unsigned int eic7700x_clk_count(FAR unsigned int *failed);
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/risc-v/src/eic7700x/eic7700x_pinctrl.h 
b/arch/risc-v/src/eic7700x/eic7700x_pinctrl.h
index 937544db5df..91d9c7aee9d 100644
--- a/arch/risc-v/src/eic7700x/eic7700x_pinctrl.h
+++ b/arch/risc-v/src/eic7700x/eic7700x_pinctrl.h
@@ -113,20 +113,17 @@ struct eic7700x_pad_s
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN const struct eic7700x_pad_s
+extern const struct eic7700x_pad_s
              g_eic7700x_pads[EIC7700X_PAD_NPADS];
-EXTERN const uint32_t
+extern const uint32_t
              g_eic7700x_pad_defaults[EIC7700X_PAD_NDEFAULTS];
-EXTERN const uint8_t
+extern const uint8_t
              g_eic7700x_pad_bygpio[EIC7700X_PAD_NGPIOS];
-EXTERN const struct pinctrl_ops_s g_eic7700x_pinctrl_ops;
+extern const struct pinctrl_ops_s g_eic7700x_pinctrl_ops;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -242,7 +239,6 @@ FAR const struct eic7700x_pad_s 
*eic7700x_pad_lookup(unsigned int pad);
 
 int eic7700x_pad_config(unsigned int pad, uint32_t cfg);
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/risc-v/src/eic7700x/eic7700x_reset.h 
b/arch/risc-v/src/eic7700x/eic7700x_reset.h
index 63b2af12eca..650bdfed5a2 100644
--- a/arch/risc-v/src/eic7700x/eic7700x_reset.h
+++ b/arch/risc-v/src/eic7700x/eic7700x_reset.h
@@ -61,15 +61,12 @@ struct eic7700x_reset_reg_s
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN const struct reset_control_ops g_eic7700x_reset_ops;
-EXTERN const struct eic7700x_reset_reg_s
+extern const struct reset_control_ops g_eic7700x_reset_ops;
+extern const struct eic7700x_reset_reg_s
              g_eic7700x_reset_regs[EIC7700X_RESET_NREGS];
 
 /****************************************************************************
@@ -133,7 +130,6 @@ int eic7700x_reset_getline(FAR struct reset_controller_dev 
*rcdev,
                            FAR struct reset_lineinfo_s *info);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/risc-v/src/fe310/fe310_clockconfig.h 
b/arch/risc-v/src/fe310/fe310_clockconfig.h
index 73aeb1a02af..d64075ee52a 100644
--- a/arch/risc-v/src/fe310/fe310_clockconfig.h
+++ b/arch/risc-v/src/fe310/fe310_clockconfig.h
@@ -44,24 +44,20 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint32_t fe310_get_hfclk(void);
-EXTERN void fe310_clockconfig(void);
+extern uint32_t fe310_get_hfclk(void);
+extern void fe310_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_FE310_FE310_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/fe310/fe310_gpio.h 
b/arch/risc-v/src/fe310/fe310_gpio.h
index ae41108afd2..634460c0dbd 100644
--- a/arch/risc-v/src/fe310/fe310_gpio.h
+++ b/arch/risc-v/src/fe310/fe310_gpio.h
@@ -149,40 +149,35 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: fe310_gpio_config
  ****************************************************************************/
 
-EXTERN int fe310_gpio_config(uint16_t gpiocfg);
+extern int fe310_gpio_config(uint16_t gpiocfg);
 
 /****************************************************************************
  * Name: fe310_gpio_write
  ****************************************************************************/
 
-EXTERN void fe310_gpio_write(uint16_t gpiocfg, bool value);
+extern void fe310_gpio_write(uint16_t gpiocfg, bool value);
 
 /****************************************************************************
  * Name: fe310_gpio_read
  ****************************************************************************/
 
-EXTERN bool fe310_gpio_read(uint16_t gpiocfg);
+extern bool fe310_gpio_read(uint16_t gpiocfg);
 
 /****************************************************************************
  * Name: fe310_gpio_clearpending
  ****************************************************************************/
 
-EXTERN void fe310_gpio_clearpending(uint32_t pin);
+extern void fe310_gpio_clearpending(uint32_t pin);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/fe310/fe310_lowputc.h 
b/arch/risc-v/src/fe310/fe310_lowputc.h
index a0dc6d12421..29da363688b 100644
--- a/arch/risc-v/src/fe310/fe310_lowputc.h
+++ b/arch/risc-v/src/fe310/fe310_lowputc.h
@@ -37,22 +37,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: fe310_lowsetup
  ****************************************************************************/
 
-EXTERN void fe310_lowsetup(void);
+extern void fe310_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/gd32vw55x/gd32vw55x_gpio.h 
b/arch/risc-v/src/gd32vw55x/gd32vw55x_gpio.h
index 6d94be327c3..cf1114e05e9 100644
--- a/arch/risc-v/src/gd32vw55x/gd32vw55x_gpio.h
+++ b/arch/risc-v/src/gd32vw55x/gd32vw55x_gpio.h
@@ -234,18 +234,14 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Base addresses for each GPIO port */
 
-EXTERN const uint32_t g_gpio_base[GD32VW55X_NGPIO_PORTS];
+extern const uint32_t g_gpio_base[GD32VW55X_NGPIO_PORTS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -353,7 +349,6 @@ int gd32_dump_gpio(uint32_t pinset, const char *msg);
 #  define gd32_dump_gpio(p,m) (0)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/hpm6000/hpm_clockconfig.h 
b/arch/risc-v/src/hpm6000/hpm_clockconfig.h
index 78fcbd13d5d..1912634b670 100644
--- a/arch/risc-v/src/hpm6000/hpm_clockconfig.h
+++ b/arch/risc-v/src/hpm6000/hpm_clockconfig.h
@@ -130,25 +130,21 @@ typedef enum
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint32_t hpm_get_osc_freq(void);
-EXTERN void hpm_clockconfig(void);
+extern uint32_t hpm_get_osc_freq(void);
+extern void hpm_clockconfig(void);
 void hpm_uart_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_HPM6000_HPM_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/hpm6000/hpm_lowputc.h 
b/arch/risc-v/src/hpm6000/hpm_lowputc.h
index 6b39193d4f5..a98226f4681 100644
--- a/arch/risc-v/src/hpm6000/hpm_lowputc.h
+++ b/arch/risc-v/src/hpm6000/hpm_lowputc.h
@@ -36,13 +36,9 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #ifdef HAVE_UART_DEVICE
@@ -65,7 +61,7 @@ struct uart_config_s
  * Name: hpm_lowsetup
  ****************************************************************************/
 
-EXTERN void hpm_lowsetup(void);
+extern void hpm_lowsetup(void);
 
 #ifdef HAVE_UART_DEVICE
 int hpm_uart_configure(uint32_t base, const struct uart_config_s *config);
@@ -77,7 +73,6 @@ void hpm_lowputc(int ch);
 #  define hpm_lowputc(ch)
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/hpm6750/hpm6750_clockconfig.h 
b/arch/risc-v/src/hpm6750/hpm6750_clockconfig.h
index 6fadd8b5075..5a5c5b7ac47 100644
--- a/arch/risc-v/src/hpm6750/hpm6750_clockconfig.h
+++ b/arch/risc-v/src/hpm6750/hpm6750_clockconfig.h
@@ -142,24 +142,20 @@ typedef enum
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint32_t hpm6750_get_osc_freq(void);
-EXTERN void hpm6750_clockconfig(void);
+extern uint32_t hpm6750_get_osc_freq(void);
+extern void hpm6750_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_HPM6750_HPM6750_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/hpm6750/hpm6750_lowputc.h 
b/arch/risc-v/src/hpm6750/hpm6750_lowputc.h
index f67cfeb6790..0e42c517ad1 100644
--- a/arch/risc-v/src/hpm6750/hpm6750_lowputc.h
+++ b/arch/risc-v/src/hpm6750/hpm6750_lowputc.h
@@ -36,22 +36,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: hpm6750_lowsetup
  ****************************************************************************/
 
-EXTERN void hpm6750_lowsetup(void);
+extern void hpm6750_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/k210/k210_clockconfig.h 
b/arch/risc-v/src/k210/k210_clockconfig.h
index d794351db65..ebe53384ef4 100644
--- a/arch/risc-v/src/k210/k210_clockconfig.h
+++ b/arch/risc-v/src/k210/k210_clockconfig.h
@@ -44,25 +44,21 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint32_t k210_get_cpuclk(void);
-EXTERN uint32_t k210_get_pll0clk(void);
-EXTERN void k210_clockconfig(void);
+extern uint32_t k210_get_cpuclk(void);
+extern uint32_t k210_get_pll0clk(void);
+extern void k210_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_K210_K210_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/k210/k210_lowputc.h 
b/arch/risc-v/src/k210/k210_lowputc.h
index 7e2d2b8d86a..cc4708cdde3 100644
--- a/arch/risc-v/src/k210/k210_lowputc.h
+++ b/arch/risc-v/src/k210/k210_lowputc.h
@@ -37,22 +37,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: k210_lowsetup
  ****************************************************************************/
 
-EXTERN void k210_lowsetup(void);
+extern void k210_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/k210/k210_sysctl.h 
b/arch/risc-v/src/k210/k210_sysctl.h
index ad02ac13247..ccbc2a2da2b 100644
--- a/arch/risc-v/src/k210/k210_sysctl.h
+++ b/arch/risc-v/src/k210/k210_sysctl.h
@@ -135,11 +135,8 @@ typedef enum
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /**
@@ -149,7 +146,7 @@ extern "C"
  * PLL configuration and clock tree setup.
  */
 
-EXTERN void k210_sysctl_init(void);
+extern void k210_sysctl_init(void);
 
 /**
  * @brief Enable a peripheral clock
@@ -158,7 +155,7 @@ EXTERN void k210_sysctl_init(void);
  * @return 0 on success, negative error code on failure
  */
 
-EXTERN int k210_sysctl_clock_enable(k210_clockid_t clkid);
+extern int k210_sysctl_clock_enable(k210_clockid_t clkid);
 
 /**
  * @brief Disable a peripheral clock
@@ -167,7 +164,7 @@ EXTERN int k210_sysctl_clock_enable(k210_clockid_t clkid);
  * @return 0 on success, negative error code on failure
  */
 
-EXTERN int k210_sysctl_clock_disable(k210_clockid_t clkid);
+extern int k210_sysctl_clock_disable(k210_clockid_t clkid);
 
 /**
  * @brief Get the frequency of a peripheral clock
@@ -176,7 +173,7 @@ EXTERN int k210_sysctl_clock_disable(k210_clockid_t clkid);
  * @return Clock frequency in Hz, 0 on error
  */
 
-EXTERN uint32_t k210_sysctl_clock_get_freq(k210_clockid_t clkid);
+extern uint32_t k210_sysctl_clock_get_freq(k210_clockid_t clkid);
 
 /**
  * @brief Get current CPU clock frequency
@@ -184,7 +181,7 @@ EXTERN uint32_t k210_sysctl_clock_get_freq(k210_clockid_t 
clkid);
  * @return CPU clock frequency in Hz
  */
 
-EXTERN uint32_t k210_sysctl_cpu_get_freq(void);
+extern uint32_t k210_sysctl_cpu_get_freq(void);
 
 /**
  * @brief Set CPU clock frequency (SDK-like)
@@ -196,7 +193,7 @@ EXTERN uint32_t k210_sysctl_cpu_get_freq(void);
  * @return Actual CPU clock frequency in Hz, 0 on failure
  */
 
-EXTERN uint32_t k210_sysctl_cpu_set_freq(uint32_t freq);
+extern uint32_t k210_sysctl_cpu_set_freq(uint32_t freq);
 
 /**
  * @brief Reset a peripheral
@@ -205,7 +202,7 @@ EXTERN uint32_t k210_sysctl_cpu_set_freq(uint32_t freq);
  * @return 0 on success, negative error code on failure
  */
 
-EXTERN int k210_sysctl_reset(k210_rstidx_t rstidx);
+extern int k210_sysctl_reset(k210_rstidx_t rstidx);
 
 /**
  * @brief Initialize a peripheral (enable clock and deassert reset)
@@ -218,7 +215,7 @@ EXTERN int k210_sysctl_reset(k210_rstidx_t rstidx);
  * @return 0 on success, negative error code on failure
  */
 
-EXTERN int k210_sysctl_init_peripheral(k210_clockid_t clkid,
+extern int k210_sysctl_init_peripheral(k210_clockid_t clkid,
                                         k210_rstidx_t rstidx);
 
 /**
@@ -228,12 +225,11 @@ EXTERN int k210_sysctl_init_peripheral(k210_clockid_t 
clkid,
  * @return true if PLL is locked, false otherwise
  */
 
-EXTERN bool k210_sysctl_pll_is_locked(uint32_t pll_offset);
+extern bool k210_sysctl_pll_is_locked(uint32_t pll_offset);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_K210_K210_SYSCTL_H */
diff --git a/arch/risc-v/src/litex/litex_clockconfig.h 
b/arch/risc-v/src/litex/litex_clockconfig.h
index 1d764b56789..c1c9aa23e9b 100644
--- a/arch/risc-v/src/litex/litex_clockconfig.h
+++ b/arch/risc-v/src/litex/litex_clockconfig.h
@@ -44,24 +44,20 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint32_t litex_get_hfclk(void);
-EXTERN void litex_clockconfig(void);
+extern uint32_t litex_get_hfclk(void);
+extern void litex_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_LITEX_LITEX_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/litex/litex_lowputc.h 
b/arch/risc-v/src/litex/litex_lowputc.h
index cf7bb61996d..6a3c1f9ee15 100644
--- a/arch/risc-v/src/litex/litex_lowputc.h
+++ b/arch/risc-v/src/litex/litex_lowputc.h
@@ -37,22 +37,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: litex_lowsetup
  ****************************************************************************/
 
-EXTERN void litex_lowsetup(void);
+extern void litex_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/mpfs/mpfs_clockconfig.h 
b/arch/risc-v/src/mpfs/mpfs_clockconfig.h
index 7f9285bf8b5..5586eecf0d2 100644
--- a/arch/risc-v/src/mpfs/mpfs_clockconfig.h
+++ b/arch/risc-v/src/mpfs/mpfs_clockconfig.h
@@ -44,25 +44,21 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN uint64_t mpfs_get_cpuclk(void);
-EXTERN uint64_t mpfs_get_pll0clk(void);
-EXTERN void mpfs_clockconfig(void);
+extern uint64_t mpfs_get_cpuclk(void);
+extern uint64_t mpfs_get_pll0clk(void);
+extern void mpfs_clockconfig(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_MPFS_MPFS_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/mpfs/mpfs_ddr.h b/arch/risc-v/src/mpfs/mpfs_ddr.h
index 27dccae4ad7..32c0e76c3a4 100644
--- a/arch/risc-v/src/mpfs/mpfs_ddr.h
+++ b/arch/risc-v/src/mpfs/mpfs_ddr.h
@@ -29,21 +29,16 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN int mpfs_ddr_init(void);
+extern int mpfs_ddr_init(void);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_MPFS_MPFS_DDR_H */
diff --git a/arch/risc-v/src/mpfs/mpfs_dma.h b/arch/risc-v/src/mpfs/mpfs_dma.h
index 364578406b2..62958a653ef 100644
--- a/arch/risc-v/src/mpfs/mpfs_dma.h
+++ b/arch/risc-v/src/mpfs/mpfs_dma.h
@@ -60,36 +60,32 @@ struct mpfs_dma_channel_config
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN int mpfs_dma_setup_transfer(unsigned int channel,
+extern int mpfs_dma_setup_transfer(unsigned int channel,
                                    struct mpfs_dma_channel_config *config);
-EXTERN int mpfs_dma_set_transaction_size(unsigned int channel,
+extern int mpfs_dma_set_transaction_size(unsigned int channel,
                                          uint8_t write_size,
                                          uint8_t read_size);
-EXTERN int mpfs_dma_start(unsigned int channel);
-EXTERN uint32_t mpfs_dma_get_transfer_type(unsigned int channel);
-EXTERN uint64_t mpfs_dma_get_bytes_remaining(unsigned int channel);
-EXTERN uint64_t mpfs_dma_get_current_destination(unsigned int channel);
-EXTERN uint64_t mpfs_dma_get_current_source(unsigned int channel);
-EXTERN int mpfs_dma_get_complete_status(unsigned int channel);
-EXTERN int mpfs_dma_get_error_status(unsigned int channel);
-EXTERN int mpfs_dma_clear_complete_status(unsigned int channel);
-EXTERN int mpfs_dma_clear_error_status(unsigned int channel);
+extern int mpfs_dma_start(unsigned int channel);
+extern uint32_t mpfs_dma_get_transfer_type(unsigned int channel);
+extern uint64_t mpfs_dma_get_bytes_remaining(unsigned int channel);
+extern uint64_t mpfs_dma_get_current_destination(unsigned int channel);
+extern uint64_t mpfs_dma_get_current_source(unsigned int channel);
+extern int mpfs_dma_get_complete_status(unsigned int channel);
+extern int mpfs_dma_get_error_status(unsigned int channel);
+extern int mpfs_dma_clear_complete_status(unsigned int channel);
+extern int mpfs_dma_clear_error_status(unsigned int channel);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_MPFS_MPFS_DMA_H */
diff --git a/arch/risc-v/src/mpfs/mpfs_lowputc.h 
b/arch/risc-v/src/mpfs/mpfs_lowputc.h
index bf625566236..dd3072b78cc 100644
--- a/arch/risc-v/src/mpfs/mpfs_lowputc.h
+++ b/arch/risc-v/src/mpfs/mpfs_lowputc.h
@@ -37,22 +37,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: mpfs_lowsetup
  ****************************************************************************/
 
-EXTERN void mpfs_lowsetup(void);
+extern void mpfs_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/rv32m1/rv32m1_clockconfig.h 
b/arch/risc-v/src/rv32m1/rv32m1_clockconfig.h
index 98c852c3330..567f1c6c663 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_clockconfig.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_clockconfig.h
@@ -76,24 +76,20 @@ enum clk_e
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-EXTERN void rv32m1_clockconfig(void);
-EXTERN unsigned rv32m1_clockfreq(enum clk_e clk);
+extern void rv32m1_clockconfig(void);
+extern unsigned rv32m1_clockfreq(enum clk_e clk);
 
 #if defined(__cplusplus)
 }
 #endif
-#undef EXTERN
 
 #endif /* __ASSEMBLY__ */
 #endif /* __ARCH_RISCV_SRC_RV32M1_RV32M1_CLOCKCONFIG_H */
diff --git a/arch/risc-v/src/rv32m1/rv32m1_gpio.h 
b/arch/risc-v/src/rv32m1/rv32m1_gpio.h
index cf4c218765e..cb80fe8f781 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_gpio.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_gpio.h
@@ -234,70 +234,65 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: rv32m1_gpio_config
  ****************************************************************************/
 
-EXTERN int rv32m1_gpio_config(uint32_t cfgset);
+extern int rv32m1_gpio_config(uint32_t cfgset);
 
 /****************************************************************************
  * Name: rv32m1_gpio_write
  ****************************************************************************/
 
-EXTERN void rv32m1_gpio_write(uint32_t cfgset, bool value);
+extern void rv32m1_gpio_write(uint32_t cfgset, bool value);
 
 /****************************************************************************
  * Name: rv32m1_gpio_toggle
  ****************************************************************************/
 
-EXTERN void rv32m1_gpio_toggle(uint32_t cfgset);
+extern void rv32m1_gpio_toggle(uint32_t cfgset);
 
 /****************************************************************************
  * Name: rv32m1_gpio_read
  ****************************************************************************/
 
-EXTERN bool rv32m1_gpio_read(uint32_t cfgset);
+extern bool rv32m1_gpio_read(uint32_t cfgset);
 
 /****************************************************************************
  * Name: rv32m1_gpio_irqenable
  ****************************************************************************/
 
-EXTERN void rv32m1_gpio_irqenable(uint32_t cfgset);
+extern void rv32m1_gpio_irqenable(uint32_t cfgset);
 
 /****************************************************************************
  * Name: rv32m1_gpio_irqdisable
  ****************************************************************************/
 
-EXTERN void rv32m1_gpio_irqdisable(uint32_t cfgset);
+extern void rv32m1_gpio_irqdisable(uint32_t cfgset);
 
 /****************************************************************************
  * Name: rv32m1_gpio_irqattach
  ****************************************************************************/
 
-EXTERN int rv32m1_gpio_irqattach(uint32_t cfgset, xcpt_t isr, void *arg);
+extern int rv32m1_gpio_irqattach(uint32_t cfgset, xcpt_t isr, void *arg);
 
 /****************************************************************************
  * Name: rv32m1_gpio_irqdetach
  ****************************************************************************/
 
-EXTERN int rv32m1_gpio_irqdetach(uint32_t cfgset, xcpt_t isr, void *arg);
+extern int rv32m1_gpio_irqdetach(uint32_t cfgset, xcpt_t isr, void *arg);
 
 /****************************************************************************
  * Name: rv32m1_gpio_clearpending
  ****************************************************************************/
 
-EXTERN void rv32m1_gpio_clearpending(uint32_t cfgset);
+extern void rv32m1_gpio_clearpending(uint32_t cfgset);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/rv32m1/rv32m1_linker.h 
b/arch/risc-v/src/rv32m1/rv32m1_linker.h
index 8d9cf6eccaf..6e2c4a052a5 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_linker.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_linker.h
@@ -58,24 +58,19 @@
 #  define LOCATE_UITCM
 #endif
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #ifdef CONFIG_RV32M1_ITCM
-  EXTERN uint8_t _slitcm[];        /* Start of ITCM LMA */
-  EXTERN uint8_t _svitcm[];        /* Start of ITCM VMA */
-  EXTERN uint8_t _evitcm[];        /* End+1 of ITCM VMA */
-  EXTERN uint8_t _suvitcm[];       /* Start of User ITCM VMA */
-  EXTERN uint8_t _euvitcm[];       /* End+1 of User ITCM VMA */
+  extern uint8_t _slitcm[];        /* Start of ITCM LMA */
+  extern uint8_t _svitcm[];        /* Start of ITCM VMA */
+  extern uint8_t _evitcm[];        /* End+1 of ITCM VMA */
+  extern uint8_t _suvitcm[];       /* Start of User ITCM VMA */
+  extern uint8_t _euvitcm[];       /* End+1 of User ITCM VMA */
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/risc-v/src/rv32m1/rv32m1_lowputc.h 
b/arch/risc-v/src/rv32m1/rv32m1_lowputc.h
index aa1693f9ff5..398c7de8528 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_lowputc.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_lowputc.h
@@ -37,22 +37,17 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: rv32m1_lowsetup
  ****************************************************************************/
 
-EXTERN void rv32m1_lowsetup(void);
+extern void rv32m1_lowsetup(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/rv32m1/rv32m1_pcc.h 
b/arch/risc-v/src/rv32m1/rv32m1_pcc.h
index 49c52f646ae..6165dac0378 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_pcc.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_pcc.h
@@ -43,28 +43,23 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: rv32m1_pcc_clock_enable
  ****************************************************************************/
 
-EXTERN void rv32m1_pcc_clock_enable(uint32_t regaddr);
+extern void rv32m1_pcc_clock_enable(uint32_t regaddr);
 
 /****************************************************************************
  * Name: rv32m1_pcc_clock_disable
  ****************************************************************************/
 
-EXTERN void rv32m1_pcc_clock_disable(uint32_t regaddr);
+extern void rv32m1_pcc_clock_disable(uint32_t regaddr);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/rv32m1/rv32m1_timersvc.h 
b/arch/risc-v/src/rv32m1/rv32m1_timersvc.h
index 5cb63564a2d..3c31f88b0e9 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_timersvc.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_timersvc.h
@@ -33,40 +33,35 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
  * Name: rv32m1_timersvc_up
  ****************************************************************************/
 
-EXTERN bool rv32m1_timersvc_up(void);
+extern bool rv32m1_timersvc_up(void);
 
 /****************************************************************************
  * Name: rv32m1_timersvc_freq
  ****************************************************************************/
 
-EXTERN uint32_t rv32m1_timersvc_freq(void);
+extern uint32_t rv32m1_timersvc_freq(void);
 
 /****************************************************************************
  * Name: rv32m1_timersvc_period
  ****************************************************************************/
 
-EXTERN uint32_t rv32m1_timersvc_period(void);
+extern uint32_t rv32m1_timersvc_period(void);
 
 /****************************************************************************
  * Name: rv32m1_timersvc_value
  ****************************************************************************/
 
-EXTERN uint32_t rv32m1_timersvc_value(void);
+extern uint32_t rv32m1_timersvc_value(void);
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/risc-v/src/rv32m1/rv32m1_uart.h 
b/arch/risc-v/src/rv32m1/rv32m1_uart.h
index dd3e076eea7..06ccdd391e0 100644
--- a/arch/risc-v/src/rv32m1/rv32m1_uart.h
+++ b/arch/risc-v/src/rv32m1/rv32m1_uart.h
@@ -75,13 +75,9 @@
 
 #ifndef __ASSEMBLY__
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 #if defined(HAVE_SERIAL_CONSOLE)
@@ -89,16 +85,15 @@ extern "C"
  * Name: rv32m1_console_uart_setup
  ****************************************************************************/
 
-EXTERN void rv32m1_console_uart_setup(void);
+extern void rv32m1_console_uart_setup(void);
 
 /****************************************************************************
  * Name: rv32m1_console_uart_putc
  ****************************************************************************/
 
-EXTERN void rv32m1_console_uart_putc(char);
+extern void rv32m1_console_uart_putc(char);
 #endif /* HAVE_SERIAL_CONSOLE */
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/arch/sim/include/irq.h b/arch/sim/include/irq.h
index 28420cf1d2f..a31592dea2c 100644
--- a/arch/sim/include/irq.h
+++ b/arch/sim/include/irq.h
@@ -63,11 +63,8 @@ struct xcptcontext
 };
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -84,7 +81,7 @@ extern "C"
  * such value for each processor that can receive an interrupt.
  */
 
-EXTERN volatile xcpt_reg_t *g_current_regs[CONFIG_SMP_NCPUS];
+extern volatile xcpt_reg_t *g_current_regs[CONFIG_SMP_NCPUS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -196,7 +193,6 @@ static inline_function bool up_interrupt_context(void)
 #define up_getusrsp(regs) \
     ((uintptr_t)((xcpt_reg_t *)(regs))[JB_SP])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/sparc/include/irq.h b/arch/sparc/include/irq.h
index d244ebb7377..f363936ed6f 100644
--- a/arch/sparc/include/irq.h
+++ b/arch/sparc/include/irq.h
@@ -69,11 +69,8 @@
 #ifndef __ASSEMBLY__
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -110,7 +107,7 @@ static inline_function uint32_t up_getsp(void)
  * such value for each processor that can receive an interrupt.
  */
 
-EXTERN volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
+extern volatile uint32_t *g_current_regs[CONFIG_SMP_NCPUS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -192,7 +189,6 @@ static inline_function bool up_interrupt_context(void)
  * Public Function Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/tricore/include/irq.h b/arch/tricore/include/irq.h
index f2ff77438c5..5a7cfa7a5fb 100644
--- a/arch/tricore/include/irq.h
+++ b/arch/tricore/include/irq.h
@@ -159,11 +159,8 @@
 #ifndef __ASSEMBLY__
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -194,7 +191,7 @@ struct xcptcontext
 
 /* g_interrupt_context store irq status */
 
-EXTERN volatile bool g_interrupt_context[CONFIG_SMP_NCPUS];
+extern volatile bool g_interrupt_context[CONFIG_SMP_NCPUS];
 
 /****************************************************************************
  * Public Function Prototypes
@@ -350,7 +347,6 @@ static inline_function uintptr_t up_getusrsp(void *regs)
 #define up_getusrpc(regs) \
     (((uint32_t *)((regs) ? (regs) : running_regs()))[REG_UPC])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/x86/include/irq.h b/arch/x86/include/irq.h
index 5de71d1ce12..28ccdeb0eff 100644
--- a/arch/x86/include/irq.h
+++ b/arch/x86/include/irq.h
@@ -72,11 +72,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -88,7 +85,7 @@ extern "C"
  * structure.  It is non-NULL only during interrupt processing.
  */
 
-EXTERN volatile uint32_t *g_current_regs;
+extern volatile uint32_t *g_current_regs;
 #endif
 
 /****************************************************************************
@@ -134,7 +131,6 @@ static inline_function void up_set_current_regs(uint32_t 
*regs)
 #define up_getusrsp(regs) \
     ((uintptr_t)((uint32_t *)(regs))[REG_ESP])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/z16/include/irq.h b/arch/z16/include/irq.h
index df732873039..3847612b44b 100644
--- a/arch/z16/include/irq.h
+++ b/arch/z16/include/irq.h
@@ -59,11 +59,8 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /* Return the current value of the stack pointer */
@@ -75,7 +72,7 @@ chipreg_t up_getsp(void);
  * interrupt processing.
  */
 
-EXTERN volatile FAR chipreg_t *g_current_regs;
+extern volatile FAR chipreg_t *g_current_regs;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -125,7 +122,6 @@ static inline_function void up_set_current_regs(FAR 
chipreg_t *regs)
 #define up_getusrsp(regs) \
     ((uintptr_t)((FAR uint32_t*)(regs))[REG_SP])
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/arch/z80/src/ez80/chip.h b/arch/z80/src/ez80/chip.h
index e9125be6c74..bcfcb9ff714 100644
--- a/arch/z80/src/ez80/chip.h
+++ b/arch/z80/src/ez80/chip.h
@@ -62,20 +62,16 @@
 
 #ifndef __ASSEMBLY__
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN uint32_t ez80_systemclock;
+extern uint32_t ez80_systemclock;
 
 /****************************************************************************
  * Public Function Prototypes
  ****************************************************************************/
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git 
a/boards/arm/rp23xx/pimoroni-pico-plus-2-w/include/rp23xx_extra_gpio.h 
b/boards/arm/rp23xx/pimoroni-pico-plus-2-w/include/rp23xx_extra_gpio.h
index a188c3c8a7d..2a598907fde 100644
--- a/boards/arm/rp23xx/pimoroni-pico-plus-2-w/include/rp23xx_extra_gpio.h
+++ b/boards/arm/rp23xx/pimoroni-pico-plus-2-w/include/rp23xx_extra_gpio.h
@@ -67,16 +67,12 @@
  * Public Data
  ****************************************************************************/
 
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN gspi_dev_t *g_cyw43439;
+extern gspi_dev_t *g_cyw43439;
 
 /****************************************************************************
  * Public Function Prototypes
@@ -130,7 +126,6 @@ static inline int rp23xx_extra_gpio_get(uint32_t gpio, bool 
*value)
   return bcmf_get_gpio(g_cyw43439->priv, gpio, value);
 }
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif
diff --git a/boards/avr/at90usb/micropendous3/src/micropendous3.h 
b/boards/avr/at90usb/micropendous3/src/micropendous3.h
index bc413036c35..660e3676c5f 100644
--- a/boards/avr/at90usb/micropendous3/src/micropendous3.h
+++ b/boards/avr/at90usb/micropendous3/src/micropendous3.h
@@ -50,11 +50,8 @@
  ****************************************************************************/
 
 #ifdef __cplusplus
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
 /****************************************************************************
@@ -67,7 +64,7 @@ extern "C"
  ****************************************************************************/
 
 #if defined(CONFIG_AVR_SPI1) || defined(CONFIG_AVR_SPI2)
-EXTERN void weak_function at90usb_spidev_initialize(void);
+extern void weak_function at90usb_spidev_initialize(void);
 #endif
 
 /****************************************************************************
@@ -79,10 +76,9 @@ EXTERN void weak_function at90usb_spidev_initialize(void);
  ****************************************************************************/
 
 #ifdef CONFIG_ARCH_LEDS
-EXTERN void at90usb_led_initialize(void);
+extern void at90usb_led_initialize(void);
 #endif
 
-#undef EXTERN
 #ifdef __cplusplus
 }
 #endif
diff --git a/boards/z80/z80/z80sim/include/board.h 
b/boards/z80/z80/z80sim/include/board.h
index 7dd51c8916b..847df82b0a2 100644
--- a/boards/z80/z80/z80sim/include/board.h
+++ b/boards/z80/z80/z80sim/include/board.h
@@ -34,19 +34,14 @@
 /****************************************************************************
  * Public Functions Definitions
  ****************************************************************************/
-#undef EXTERN
 #if defined(__cplusplus)
-#define EXTERN extern "C"
 extern "C"
 {
-#else
-#define EXTERN extern
 #endif
 
-EXTERN void z80_lowputc(char ch) __naked;
-EXTERN char z80_lowgetc(void) __naked;
+extern void z80_lowputc(char ch) __naked;
+extern char z80_lowgetc(void) __naked;
 
-#undef EXTERN
 #if defined(__cplusplus)
 }
 #endif

Reply via email to