You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gn...@apache.org on 2020/02/08 13:38:15 UTC

[incubator-nuttx] 01/02: Call up_irqinitialize from irq subsystem

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

gnutt pushed a commit to branch pr225
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit eb09e1d8d713eaf41129f79a5ad5653c4c810f55
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Fri Feb 7 14:41:58 2020 +0800

    Call up_irqinitialize from irq subsystem
    
    to make the irq ready for use as soon as possible
    
    Change-Id: Ief969193161521ed3d5cbb3da8b40f4b1ae547cb
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 arch/arm/src/am335x/am335x_i2c.c            |  6 +++---
 arch/arm/src/common/up_initialize.c         |  4 ----
 arch/arm/src/common/up_internal.h           |  2 --
 arch/arm/src/samd5e5/sam_gmac.c             | 20 ++++++++++----------
 arch/arm/src/stm32f7/stm32_sai.c            |  4 ++--
 arch/arm/src/stm32h7/stm32_qspi.c           | 11 +++++------
 arch/avr/src/common/up_initialize.c         |  4 ----
 arch/avr/src/common/up_internal.h           |  1 -
 arch/hc/src/common/up_initialize.c          |  4 ----
 arch/hc/src/common/up_internal.h            |  1 -
 arch/mips/src/common/up_initialize.c        |  4 ----
 arch/mips/src/common/up_internal.h          |  1 -
 arch/mips/src/pic32mz/pic32mz-spi.c         |  8 ++++----
 arch/misoc/src/lm32/lm32.h                  |  4 ----
 arch/misoc/src/lm32/lm32_initialize.c       |  4 ----
 arch/misoc/src/lm32/lm32_irq.c              |  4 ++--
 arch/misoc/src/minerva/minerva.h            |  4 ----
 arch/misoc/src/minerva/minerva_initialize.c |  4 ----
 arch/misoc/src/minerva/minerva_irq.c        |  4 ++--
 arch/or1k/src/common/up_initialize.c        |  4 ----
 arch/or1k/src/common/up_internal.h          |  2 --
 arch/renesas/src/common/up_initialize.c     |  4 ----
 arch/renesas/src/common/up_internal.h       |  1 -
 arch/risc-v/include/rv64gc/syscall.h        |  6 +++---
 arch/risc-v/src/common/up_initialize.c      |  4 ----
 arch/risc-v/src/common/up_internal.h        |  1 -
 arch/risc-v/src/fe310/fe310_irq.c           |  4 ++--
 arch/risc-v/src/fe310/fe310_serial.c        |  6 +++---
 arch/risc-v/src/fe310/fe310_timerisr.c      |  2 +-
 arch/risc-v/src/k210/k210_cpuidlestack.c    |  2 +-
 arch/risc-v/src/k210/k210_cpustart.c        |  4 ++--
 arch/risc-v/src/k210/k210_irq.c             |  4 ++--
 arch/risc-v/src/k210/k210_serial.c          |  6 +++---
 arch/risc-v/src/k210/k210_timerisr.c        |  2 +-
 arch/risc-v/src/rv64gc/up_assert.c          | 12 ++++++------
 arch/risc-v/src/rv64gc/up_fault.c           |  2 +-
 arch/risc-v/src/rv64gc/up_sigdeliver.c      |  4 ++--
 arch/sim/include/irq.h                      | 11 +++++++++--
 arch/x86/src/common/up_initialize.c         |  4 ----
 arch/x86/src/common/up_internal.h           |  1 -
 arch/xtensa/src/common/xtensa.h             |  1 -
 arch/xtensa/src/common/xtensa_initialize.c  |  4 ----
 arch/xtensa/src/esp32/esp32_irq.c           |  4 ++--
 arch/z16/src/common/up_initialize.c         |  4 ----
 arch/z16/src/common/up_internal.h           |  1 -
 arch/z80/src/common/up_initialize.c         | 10 ----------
 arch/z80/src/common/z80_internal.h          |  8 --------
 arch/z80/src/ez80/ez80_irq.c                |  4 ++--
 arch/z80/src/ez80/ez80_rtc.c                | 26 ++++----------------------
 arch/z80/src/z180/z180_irq.c                |  4 ++--
 arch/z80/src/z8/z8_irq.c                    |  4 ++--
 boards/z80/z80/z80sim/src/z80_irq.c         |  4 ++--
 boards/z80/z80/z80sim/src/z80_timerisr.c    |  2 +-
 include/nuttx/arch.h                        |  6 ++++++
 sched/irq/irq_initialize.c                  |  2 ++
 55 files changed, 87 insertions(+), 177 deletions(-)

diff --git a/arch/arm/src/am335x/am335x_i2c.c b/arch/arm/src/am335x/am335x_i2c.c
index 90f2df4..879189b 100644
--- a/arch/arm/src/am335x/am335x_i2c.c
+++ b/arch/arm/src/am335x/am335x_i2c.c
@@ -544,7 +544,7 @@ static inline int am335x_i2c_sem_waitdone(FAR struct am335x_i2c_priv_s *priv)
     {
       /* Get the current time */
 
-      (void)clock_gettime(CLOCK_REALTIME, &abstime);
+      clock_gettime(CLOCK_REALTIME, &abstime);
 
       /* Calculate a time in the future */
 
@@ -1294,8 +1294,8 @@ static int am335x_i2c_init(FAR struct am335x_i2c_priv_s *priv)
 
   /* Configure pins */
 
-  (void)am335x_gpio_config(priv->config->scl_pin);
-  (void)am335x_gpio_config(priv->config->sda_pin);
+  am335x_gpio_config(priv->config->scl_pin);
+  am335x_gpio_config(priv->config->sda_pin);
 
   /* Disable I2C module */
 
diff --git a/arch/arm/src/common/up_initialize.c b/arch/arm/src/common/up_initialize.c
index 3ad5ff8..42968e3 100644
--- a/arch/arm/src/common/up_initialize.c
+++ b/arch/arm/src/common/up_initialize.c
@@ -127,10 +127,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS) && \
diff --git a/arch/arm/src/common/up_internal.h b/arch/arm/src/common/up_internal.h
index dbfc474..5075cc7 100644
--- a/arch/arm/src/common/up_internal.h
+++ b/arch/arm/src/common/up_internal.h
@@ -337,8 +337,6 @@ void up_pminitialize(void);
 
 /* Interrupt handling *******************************************************/
 
-void up_irqinitialize(void);
-
 /* Exception handling logic unique to the Cortex-M family */
 
 #if defined(CONFIG_ARCH_CORTEXM0) || defined(CONFIG_ARCH_ARMV7M)
diff --git a/arch/arm/src/samd5e5/sam_gmac.c b/arch/arm/src/samd5e5/sam_gmac.c
index 8cc07e1..4c7b506 100644
--- a/arch/arm/src/samd5e5/sam_gmac.c
+++ b/arch/arm/src/samd5e5/sam_gmac.c
@@ -752,8 +752,8 @@ static int sam_transmit(struct sam_gmac_s *priv)
 
   /* Setup the TX timeout watchdog (perhaps restarting the timer) */
 
-  (void)wd_start(priv->txtimeout, SAM_TXTIMEOUT, sam_txtimeout_expiry, 1,
-                 (uint32_t)priv);
+  wd_start(priv->txtimeout, SAM_TXTIMEOUT, sam_txtimeout_expiry, 1,
+          (uint32_t)priv);
 
   /* Set d_len to zero meaning that the d_buf[] packet buffer is again
    * available.
@@ -895,7 +895,7 @@ static void sam_dopoll(struct sam_gmac_s *priv)
     {
       /* If we have the descriptor, then poll the network for new XMIT data. */
 
-      (void)devif_poll(dev, sam_txpoll);
+      devif_poll(dev, sam_txpoll);
     }
 }
 
@@ -1764,12 +1764,12 @@ static void sam_poll_work(FAR void *arg)
     {
       /* Update TCP timing states and poll the network for new XMIT data. */
 
-      (void)devif_timer(dev, sam_txpoll);
+      devif_timer(dev, sam_txpoll);
     }
 
   /* Setup the watchdog poll timer again */
 
-  (void)wd_start(priv->txpoll, SAM_WDDELAY, sam_poll_expiry, 1, priv);
+  wd_start(priv->txpoll, SAM_WDDELAY, sam_poll_expiry, 1, priv);
   net_unlock();
 }
 
@@ -1871,7 +1871,7 @@ static int sam_ifup(struct net_driver_s *dev)
 
   /* Set and activate a timer process */
 
-  (void)wd_start(priv->txpoll, SAM_WDDELAY, sam_poll_expiry, 1, (uint32_t)priv);
+  wd_start(priv->txpoll, SAM_WDDELAY, sam_poll_expiry, 1, (uint32_t)priv);
 
   /* Enable the GMAC interrupt */
 
@@ -3576,7 +3576,7 @@ static void sam_ipv6multicast(struct sam_gmac_s *priv)
   ninfo("IPv6 Multicast: %02x:%02x:%02x:%02x:%02x:%02x\n",
         mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
 
-  (void)sam_addmac(dev, mac);
+  sam_addmac(dev, mac);
 
 #ifdef CONFIG_NET_ICMPv6_AUTOCONF
   /* Add the IPv6 all link-local nodes Ethernet address.  This is the
@@ -3584,7 +3584,7 @@ static void sam_ipv6multicast(struct sam_gmac_s *priv)
    * packets.
    */
 
-  (void)sam_addmac(dev, g_ipv6_ethallnodes.ether_addr_octet);
+  sam_addmac(dev, g_ipv6_ethallnodes.ether_addr_octet);
 
 #endif /* CONFIG_NET_ICMPv6_AUTOCONF */
 #ifdef CONFIG_NET_ICMPv6_ROUTER
@@ -3593,7 +3593,7 @@ static void sam_ipv6multicast(struct sam_gmac_s *priv)
    * packets.
    */
 
-  (void)sam_addmac(dev, g_ipv6_ethallrouters.ether_addr_octet);
+  sam_addmac(dev, g_ipv6_ethallrouters.ether_addr_octet);
 
 #endif /* CONFIG_NET_ICMPv6_ROUTER */
 }
@@ -3645,7 +3645,7 @@ static int sam_gmac_configure(struct sam_gmac_s *priv)
 
   /* Clear any pending interrupts */
 
-  (void)sam_getreg(priv, SAM_GMAC_ISR);
+  sam_getreg(priv, SAM_GMAC_ISR);
 
   /* Initial configuration:
    *
diff --git a/arch/arm/src/stm32f7/stm32_sai.c b/arch/arm/src/stm32f7/stm32_sai.c
index e25e4c1..4d09e35 100644
--- a/arch/arm/src/stm32f7/stm32_sai.c
+++ b/arch/arm/src/stm32f7/stm32_sai.c
@@ -1041,7 +1041,7 @@ static void sai_worker(void *arg)
 
       flags = enter_critical_section();
 #ifdef CONFIG_STM32F7_SAI_DMA
-      (void)sai_dma_setup(priv);
+      sai_dma_setup(priv);
 #endif
       leave_critical_section(flags);
     }
@@ -1160,7 +1160,7 @@ static void sai_dma_callback(DMA_HANDLE handle, uint8_t isr, void *arg)
 
   /* Cancel the watchdog timeout */
 
-  (void)wd_cancel(priv->dog);
+  wd_cancel(priv->dog);
 
   /* Then schedule completion of the transfer to occur on the worker thread */
 
diff --git a/arch/arm/src/stm32h7/stm32_qspi.c b/arch/arm/src/stm32h7/stm32_qspi.c
index 5b4edc7..b381a5c 100644
--- a/arch/arm/src/stm32h7/stm32_qspi.c
+++ b/arch/arm/src/stm32h7/stm32_qspi.c
@@ -1380,7 +1380,7 @@ static void qspi_dma_callback(DMA_HANDLE handle, uint8_t isr, void *arg)
 
   /* Cancel the watchdog timeout */
 
-  (void)wd_cancel(priv->dmadog);
+  wd_cancel(priv->dmadog);
 
   /* Sample DMA registers at the time of the callback */
 
@@ -1529,7 +1529,7 @@ static int qspi_memory_dma(struct stm32h7_qspidev_s *priv,
 
       /* Cancel the watchdog timeout */
 
-      (void)wd_cancel(priv->dmadog);
+      wd_cancel(priv->dmadog);
 
       /* Check if we were awakened by an error of some kind */
 
@@ -1774,8 +1774,7 @@ static int qspi_lock(struct qspi_dev_s *dev, bool lock)
     }
   else
     {
-      (void)nxsem_post(&priv->exclsem);
-      ret = OK;
+      ret = nxsem_post(&priv->exclsem);
     }
 
   return ret;
@@ -2107,7 +2106,7 @@ static int qspi_command(struct qspi_dev_s *dev,
 
   /* Wait for the interrupt routine to finish it's magic */
 
-  (void)nxsem_wait(&priv->op_sem);
+  nxsem_wait(&priv->op_sem);
   MEMORY_SYNC();
 
   /* Convey the result */
@@ -2265,7 +2264,7 @@ static int qspi_memory(struct qspi_dev_s *dev,
 
   /* Wait for the interrupt routine to finish it's magic */
 
-  (void)nxsem_wait(&priv->op_sem);
+  nxsem_wait(&priv->op_sem);
   MEMORY_SYNC();
 
   /* convey the result */
diff --git a/arch/avr/src/common/up_initialize.c b/arch/avr/src/common/up_initialize.c
index 8378ac4..1e769bd 100644
--- a/arch/avr/src/common/up_initialize.c
+++ b/arch/avr/src/common/up_initialize.c
@@ -168,10 +168,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
diff --git a/arch/avr/src/common/up_internal.h b/arch/avr/src/common/up_internal.h
index 09def06..2bd68b6 100644
--- a/arch/avr/src/common/up_internal.h
+++ b/arch/avr/src/common/up_internal.h
@@ -123,7 +123,6 @@ extern uint32_t _ebss;            /* End+1 of .bss */
 
 /* Defined in files with the same name as the function */
 
-void up_irqinitialize(void);
 #ifdef CONFIG_ARCH_DMA
 void weak_function up_dma_initialize(void);
 #endif
diff --git a/arch/hc/src/common/up_initialize.c b/arch/hc/src/common/up_initialize.c
index 3e588fd..a12b286 100644
--- a/arch/hc/src/common/up_initialize.c
+++ b/arch/hc/src/common/up_initialize.c
@@ -90,10 +90,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
diff --git a/arch/hc/src/common/up_internal.h b/arch/hc/src/common/up_internal.h
index 6922270..bf16dfa 100644
--- a/arch/hc/src/common/up_internal.h
+++ b/arch/hc/src/common/up_internal.h
@@ -144,7 +144,6 @@ extern uint32_t g_intstackbase;
 
 void up_copystate(uint8_t *dest, uint8_t *src);
 void up_decodeirq(uint8_t *regs);
-void up_irqinitialize(void);
 int  up_saveusercontext(uint8_t *saveregs);
 void up_fullcontextrestore(uint8_t *restoreregs) noreturn_function;
 void up_switchcontext(uint8_t *saveregs, uint8_t *restoreregs);
diff --git a/arch/mips/src/common/up_initialize.c b/arch/mips/src/common/up_initialize.c
index 3456578..e433bc4 100644
--- a/arch/mips/src/common/up_initialize.c
+++ b/arch/mips/src/common/up_initialize.c
@@ -92,10 +92,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
diff --git a/arch/mips/src/common/up_internal.h b/arch/mips/src/common/up_internal.h
index d4ccdb1..b7fb134 100644
--- a/arch/mips/src/common/up_internal.h
+++ b/arch/mips/src/common/up_internal.h
@@ -235,7 +235,6 @@ void up_sigdeliver(void);
 
 /* IRQs */
 
-void up_irqinitialize(void);
 bool up_pending_irq(int irq);
 void up_clrpend_irq(int irq);
 
diff --git a/arch/mips/src/pic32mz/pic32mz-spi.c b/arch/mips/src/pic32mz/pic32mz-spi.c
index 64042a6..0dde4c9 100644
--- a/arch/mips/src/pic32mz/pic32mz-spi.c
+++ b/arch/mips/src/pic32mz/pic32mz-spi.c
@@ -753,7 +753,7 @@ static inline void spi_flush(FAR struct pic32mz_dev_s *priv)
 
   while ((spi_getreg(priv, PIC32MZ_SPI_STAT_OFFSET) & SPI_STAT_SPIRBF) != 0)
     {
-      (void)spi_getreg(priv, PIC32MZ_SPI_BUF_OFFSET);
+      spi_getreg(priv, PIC32MZ_SPI_BUF_OFFSET);
     }
 }
 
@@ -889,7 +889,7 @@ static void spi_dmarxcallback(DMA_HANDLE handle, uint8_t status, void *arg)
 
   /* Cancel the watchdog timeout */
 
-  (void)wd_cancel(priv->dmadog);
+  wd_cancel(priv->dmadog);
 
   /* Sample DMA registers at the time of the callback */
 
@@ -944,7 +944,7 @@ static void spi_dmatxcallback(DMA_HANDLE handle, uint8_t status, void *arg)
 
   /* Cancel the watchdog timeout */
 
-  (void)wd_cancel(priv->dmadog);
+  wd_cancel(priv->dmadog);
 
   /* Sample DMA registers at the time of the callback */
 
@@ -1785,7 +1785,7 @@ static void spi_exchange(FAR struct spi_dev_s *dev, FAR const void *txbuffer,
 
       /* Cancel the watchdog timeout */
 
-      (void)wd_cancel(priv->dmadog);
+      wd_cancel(priv->dmadog);
 
       /* Check if we were awakened by an error of some kind. EINTR is not a
        * failure. It simply means that the wait was awakened by a signal.
diff --git a/arch/misoc/src/lm32/lm32.h b/arch/misoc/src/lm32/lm32.h
index 3b51b14..9e21881 100644
--- a/arch/misoc/src/lm32/lm32.h
+++ b/arch/misoc/src/lm32/lm32.h
@@ -128,10 +128,6 @@ void lm32_add_region(void);
 
 void lm32_copystate(uint32_t *dest, uint32_t *src);
 
-/* IRQ initialization *******************************************************/
-
-void lm32_irq_initialize(void);
-
 /* Interrupt decode *********************************************************/
 
 uint32_t *lm32_decodeirq(uint32_t intstat, uint32_t *regs);
diff --git a/arch/misoc/src/lm32/lm32_initialize.c b/arch/misoc/src/lm32/lm32_initialize.c
index e651616..73349e3 100644
--- a/arch/misoc/src/lm32/lm32_initialize.c
+++ b/arch/misoc/src/lm32/lm32_initialize.c
@@ -67,10 +67,6 @@
 
 void up_initialize(void)
 {
-  /* Initialize the System Timer */
-
-  lm32_irq_initialize();
-
   /* Initialize the serial driver */
 
   misoc_serial_initialize();
diff --git a/arch/misoc/src/lm32/lm32_irq.c b/arch/misoc/src/lm32/lm32_irq.c
index f667d1b..6a87985 100644
--- a/arch/misoc/src/lm32/lm32_irq.c
+++ b/arch/misoc/src/lm32/lm32_irq.c
@@ -60,10 +60,10 @@ volatile uint32_t *g_current_regs;
  ****************************************************************************/
 
 /****************************************************************************
- * Name: lm32_irq_initialize
+ * Name: up_irqinitialize
  ****************************************************************************/
 
-void lm32_irq_initialize(void)
+void up_irqinitialize(void)
 {
   /* currents_regs is non-NULL only while processing an interrupt */
 
diff --git a/arch/misoc/src/minerva/minerva.h b/arch/misoc/src/minerva/minerva.h
index 63e2014..c663704 100644
--- a/arch/misoc/src/minerva/minerva.h
+++ b/arch/misoc/src/minerva/minerva.h
@@ -128,10 +128,6 @@ void minerva_add_region(void);
 
 void minerva_copystate(uint32_t * dest, uint32_t * src);
 
-/* IRQ initialization *******************************************************/
-
-void minerva_irq_initialize(void);
-
 /* Interrupt decode *********************************************************/
 
 uint32_t *minerva_decodeirq(uint32_t intstat, uint32_t * regs);
diff --git a/arch/misoc/src/minerva/minerva_initialize.c b/arch/misoc/src/minerva/minerva_initialize.c
index 3057756..45cde5c 100644
--- a/arch/misoc/src/minerva/minerva_initialize.c
+++ b/arch/misoc/src/minerva/minerva_initialize.c
@@ -67,10 +67,6 @@
 
 void up_initialize(void)
 {
-  /* Initialize the System Timer */
-
-  minerva_irq_initialize();
-
   /* Initialize the serial driver */
 
   misoc_serial_initialize();
diff --git a/arch/misoc/src/minerva/minerva_irq.c b/arch/misoc/src/minerva/minerva_irq.c
index a8da72b..d622095 100644
--- a/arch/misoc/src/minerva/minerva_irq.c
+++ b/arch/misoc/src/minerva/minerva_irq.c
@@ -60,10 +60,10 @@ volatile uint32_t *g_current_regs;
  ****************************************************************************/
 
 /****************************************************************************
- * Name: minerva_irq_initialize
+ * Name: up_irqinitialize
  ****************************************************************************/
 
-void minerva_irq_initialize(void)
+void up_irqinitialize(void)
 {
   /* currents_regs is non-NULL only while processing an interrupt */
 
diff --git a/arch/or1k/src/common/up_initialize.c b/arch/or1k/src/common/up_initialize.c
index 5609a5f..783415e 100644
--- a/arch/or1k/src/common/up_initialize.c
+++ b/arch/or1k/src/common/up_initialize.c
@@ -185,10 +185,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS) && \
diff --git a/arch/or1k/src/common/up_internal.h b/arch/or1k/src/common/up_internal.h
index 1e1abc1..40d6ea6 100644
--- a/arch/or1k/src/common/up_internal.h
+++ b/arch/or1k/src/common/up_internal.h
@@ -263,8 +263,6 @@ void up_pminitialize(void);
 
 /* Interrupt handling *******************************************************/
 
-void up_irqinitialize(void);
-
 /* Exception handling logic unique to the Cortex-M family */
 
 /* Interrupt acknowledge and dispatch */
diff --git a/arch/renesas/src/common/up_initialize.c b/arch/renesas/src/common/up_initialize.c
index 0993bcf..1353480 100644
--- a/arch/renesas/src/common/up_initialize.c
+++ b/arch/renesas/src/common/up_initialize.c
@@ -86,10 +86,6 @@ void up_initialize(void)
 
   g_current_regs = NULL;
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
   /* Initialize the system timer interrupt */
 
diff --git a/arch/renesas/src/common/up_internal.h b/arch/renesas/src/common/up_internal.h
index 171f4fc..077805b 100644
--- a/arch/renesas/src/common/up_internal.h
+++ b/arch/renesas/src/common/up_internal.h
@@ -143,7 +143,6 @@ void up_dataabort(uint32_t *regs);
 void up_decodeirq(uint32_t *regs);
 uint32_t *up_doirq(int irq, uint32_t *regs);
 void up_fullcontextrestore(uint32_t *regs) noreturn_function;
-void up_irqinitialize(void);
 void up_prefetchabort(uint32_t *regs);
 int  up_saveusercontext(uint32_t *regs);
 void up_sigdeliver(void);
diff --git a/arch/risc-v/include/rv64gc/syscall.h b/arch/risc-v/include/rv64gc/syscall.h
index e611230..c6481ba 100644
--- a/arch/risc-v/include/rv64gc/syscall.h
+++ b/arch/risc-v/include/rv64gc/syscall.h
@@ -87,7 +87,7 @@
 
 #define SYS_restore_context (1)
 #define up_fullcontextrestore(restoreregs) \
-  (void)sys_call1(SYS_restore_context, (uintptr_t)restoreregs)
+  sys_call1(SYS_restore_context, (uintptr_t)restoreregs)
 
 /* SYS call 2:
  *
@@ -96,7 +96,7 @@
 
 #define SYS_switch_context (2)
 #define up_switchcontext(saveregs, restoreregs) \
-  (void)sys_call2(SYS_switch_context, (uintptr_t)saveregs, (uintptr_t)restoreregs)
+  sys_call2(SYS_switch_context, (uintptr_t)saveregs, (uintptr_t)restoreregs)
 
 #ifdef CONFIG_BUILD_KERNEL
 /* SYS call 3:
@@ -105,7 +105,7 @@
  */
 
 #define SYS_syscall_return (3)
-#define up_syscall_return() (void)sys_call0(SYS_syscall_return)
+#define up_syscall_return() sys_call0(SYS_syscall_return)
 
 #endif
 #endif /* __ASSEMBLY__ */
diff --git a/arch/risc-v/src/common/up_initialize.c b/arch/risc-v/src/common/up_initialize.c
index 33b590c..3ebd0ae 100644
--- a/arch/risc-v/src/common/up_initialize.c
+++ b/arch/risc-v/src/common/up_initialize.c
@@ -114,10 +114,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS) && \
diff --git a/arch/risc-v/src/common/up_internal.h b/arch/risc-v/src/common/up_internal.h
index 702565f..768fc81 100644
--- a/arch/risc-v/src/common/up_internal.h
+++ b/arch/risc-v/src/common/up_internal.h
@@ -176,7 +176,6 @@ void up_allocate_heap(FAR void **heap_start, size_t *heap_size);
 
 /* IRQ initialization *******************************************************/
 
-void up_irqinitialize(void);
 void up_ack_irq(int irq);
 
 #ifdef CONFIG_ARCH_RV64GC
diff --git a/arch/risc-v/src/fe310/fe310_irq.c b/arch/risc-v/src/fe310/fe310_irq.c
index 3a51929..a2ad7ba 100644
--- a/arch/risc-v/src/fe310/fe310_irq.c
+++ b/arch/risc-v/src/fe310/fe310_irq.c
@@ -65,7 +65,7 @@ void up_irqinitialize(void)
 {
   /* Disable Machine interrupts */
 
-  (void)up_irq_save();
+ up_irq_save();
 
   /* Disable all global interrupts */
 
@@ -105,7 +105,7 @@ void up_irqinitialize(void)
 
   /* And finally, enable interrupts */
 
-  (void)up_irq_enable();
+  up_irq_enable();
 #endif
 }
 
diff --git a/arch/risc-v/src/fe310/fe310_serial.c b/arch/risc-v/src/fe310/fe310_serial.c
index 8e92f34..e836f35 100644
--- a/arch/risc-v/src/fe310/fe310_serial.c
+++ b/arch/risc-v/src/fe310/fe310_serial.c
@@ -646,14 +646,14 @@ void up_serialinit(void)
   /* Register the console */
 
 #ifdef HAVE_SERIAL_CONSOLE
-  (void)uart_register("/dev/console", &CONSOLE_DEV);
+  uart_register("/dev/console", &CONSOLE_DEV);
 #endif
 
   /* Register all UARTs */
 
-  (void)uart_register("/dev/ttyS0", &TTYS0_DEV);
+  uart_register("/dev/ttyS0", &TTYS0_DEV);
 #ifdef TTYS1_DEV
-  (void)uart_register("/dev/ttyS1", &TTYS1_DEV);
+  uart_register("/dev/ttyS1", &TTYS1_DEV);
 #endif
 }
 
diff --git a/arch/risc-v/src/fe310/fe310_timerisr.c b/arch/risc-v/src/fe310/fe310_timerisr.c
index 32717e1..066671a 100644
--- a/arch/risc-v/src/fe310/fe310_timerisr.c
+++ b/arch/risc-v/src/fe310/fe310_timerisr.c
@@ -132,7 +132,7 @@ void riscv_timer_initialize(void)
 {
   /* Attach timer interrupt handler */
 
-  (void)irq_attach(FE310_IRQ_MTIMER, fe310_timerisr, NULL);
+  irq_attach(FE310_IRQ_MTIMER, fe310_timerisr, NULL);
 
   /* Reload CLINT mtimecmp */
 
diff --git a/arch/risc-v/src/k210/k210_cpuidlestack.c b/arch/risc-v/src/k210/k210_cpuidlestack.c
index e070650..de21901 100644
--- a/arch/risc-v/src/k210/k210_cpuidlestack.c
+++ b/arch/risc-v/src/k210/k210_cpuidlestack.c
@@ -98,7 +98,7 @@
 int up_cpu_idlestack(int cpu, FAR struct tcb_s *tcb, size_t stack_size)
 {
 #if CONFIG_SMP_NCPUS > 1
-  (void)up_create_stack(tcb, stack_size, TCB_FLAG_TTYPE_KERNEL);
+  up_create_stack(tcb, stack_size, TCB_FLAG_TTYPE_KERNEL);
 #endif
   return OK;
 }
diff --git a/arch/risc-v/src/k210/k210_cpustart.c b/arch/risc-v/src/k210/k210_cpustart.c
index bb27ef5..433b12b 100644
--- a/arch/risc-v/src/k210/k210_cpustart.c
+++ b/arch/risc-v/src/k210/k210_cpustart.c
@@ -139,11 +139,11 @@ void k210_cpu_boot(int cpu)
   sched_note_cpu_started(this_task());
 #endif
 
-  (void)up_irq_enable();
+  up_irq_enable();
 
   /* Then transfer control to the IDLE task */
 
-  (void)nx_idle_task(0, NULL);
+  nx_idle_task(0, NULL);
 }
 
 /****************************************************************************
diff --git a/arch/risc-v/src/k210/k210_irq.c b/arch/risc-v/src/k210/k210_irq.c
index 4773f40..6d064c3 100644
--- a/arch/risc-v/src/k210/k210_irq.c
+++ b/arch/risc-v/src/k210/k210_irq.c
@@ -81,7 +81,7 @@ void up_irqinitialize(void)
 {
   /* Disable Machine interrupts */
 
-  (void)up_irq_save();
+  up_irq_save();
 
   /* Disable all global interrupts */
 
@@ -137,7 +137,7 @@ void up_irqinitialize(void)
 
   /* And finally, enable interrupts */
 
-  (void)up_irq_enable();
+  up_irq_enable();
 #endif
 }
 
diff --git a/arch/risc-v/src/k210/k210_serial.c b/arch/risc-v/src/k210/k210_serial.c
index e9eb40f..0912539 100644
--- a/arch/risc-v/src/k210/k210_serial.c
+++ b/arch/risc-v/src/k210/k210_serial.c
@@ -646,14 +646,14 @@ void up_serialinit(void)
   /* Register the console */
 
 #ifdef HAVE_SERIAL_CONSOLE
-  (void)uart_register("/dev/console", &CONSOLE_DEV);
+  uart_register("/dev/console", &CONSOLE_DEV);
 #endif
 
   /* Register all UARTs */
 
-  (void)uart_register("/dev/ttyS0", &TTYS0_DEV);
+  uart_register("/dev/ttyS0", &TTYS0_DEV);
 #ifdef TTYS1_DEV
-  (void)uart_register("/dev/ttyS1", &TTYS1_DEV);
+  uart_register("/dev/ttyS1", &TTYS1_DEV);
 #endif
 }
 
diff --git a/arch/risc-v/src/k210/k210_timerisr.c b/arch/risc-v/src/k210/k210_timerisr.c
index 7cb3933..f5c19e4 100644
--- a/arch/risc-v/src/k210/k210_timerisr.c
+++ b/arch/risc-v/src/k210/k210_timerisr.c
@@ -135,7 +135,7 @@ void riscv_timer_initialize(void)
 #if 1
   /* Attach timer interrupt handler */
 
-  (void)irq_attach(K210_IRQ_MTIMER, k210_timerisr, NULL);
+  irq_attach(K210_IRQ_MTIMER, k210_timerisr, NULL);
 
   /* Reload CLINT mtimecmp */
 
diff --git a/arch/risc-v/src/rv64gc/up_assert.c b/arch/risc-v/src/rv64gc/up_assert.c
index 06e781d..40dd255 100644
--- a/arch/risc-v/src/rv64gc/up_assert.c
+++ b/arch/risc-v/src/rv64gc/up_assert.c
@@ -307,19 +307,19 @@ static void _up_assert(int errorcode)
 {
   /* Flush any buffered SYSLOG data */
 
-  (void)syslog_flush();
+  syslog_flush();
 
   /* Are we in an interrupt handler or the idle task? */
 
   if (CURRENT_REGS || running_task()->flink == NULL)
     {
-      (void)up_irq_save();
+      up_irq_save();
       for (; ; )
         {
 #ifdef CONFIG_SMP
           /* Try (again) to stop activity on other CPUs */
 
-          (void)spin_trylock(&g_cpu_irqlock);
+          spin_trylock(&g_cpu_irqlock);
 #endif
 
 #if CONFIG_BOARD_RESET_ON_ASSERT >= 1
@@ -385,7 +385,7 @@ void up_assert(const uint8_t *filename, int lineno)
 
   /* Flush any buffered SYSLOG data (from prior to the assertion) */
 
-  (void)syslog_flush();
+  syslog_flush();
 
 #ifdef CONFIG_SMP
 #if CONFIG_TASK_NAME_SIZE > 0
@@ -420,12 +420,12 @@ void up_assert(const uint8_t *filename, int lineno)
 #ifdef CONFIG_ARCH_USBDUMP
   /* Dump USB trace data */
 
-  (void)usbtrace_enumerate(assert_tracecallback, NULL);
+  usbtrace_enumerate(assert_tracecallback, NULL);
 #endif
 
   /* Flush any buffered SYSLOG data (from the above) */
 
-  (void)syslog_flush();
+  syslog_flush();
 
 #ifdef CONFIG_BOARD_CRASHDUMP
   board_crashdump(up_getsp(), running_task(), filename, lineno);
diff --git a/arch/risc-v/src/rv64gc/up_fault.c b/arch/risc-v/src/rv64gc/up_fault.c
index e04fa3e..5075f9e 100644
--- a/arch/risc-v/src/rv64gc/up_fault.c
+++ b/arch/risc-v/src/rv64gc/up_fault.c
@@ -119,5 +119,5 @@ void up_fault(int irq, uint64_t *regs)
          CURRENT_REGS[REG_TP], CURRENT_REGS[REG_RA]);
 #endif
 
-  (void)up_irq_save();
+  up_irq_save();
 }
diff --git a/arch/risc-v/src/rv64gc/up_sigdeliver.c b/arch/risc-v/src/rv64gc/up_sigdeliver.c
index f1c2b5c..e7eaa87 100644
--- a/arch/risc-v/src/rv64gc/up_sigdeliver.c
+++ b/arch/risc-v/src/rv64gc/up_sigdeliver.c
@@ -155,9 +155,9 @@ void up_sigdeliver(void)
    */
 
 #ifdef CONFIG_SMP
-  (void)enter_critical_section();
+  enter_critical_section();
 #else
-  (void)up_irq_save();
+  up_irq_save();
 #endif
 
   /* Restore the saved errno value */
diff --git a/arch/sim/include/irq.h b/arch/sim/include/irq.h
index 97af188..de89aec 100644
--- a/arch/sim/include/irq.h
+++ b/arch/sim/include/irq.h
@@ -62,7 +62,7 @@
 
 #  define XCPTCONTEXT_REGS    6
 #elif defined(CONFIG_HOST_ARM)
-#  define XCPTCONTEXT_REGS 16
+#  define XCPTCONTEXT_REGS    16
 #endif
 
 /****************************************************************************
@@ -70,7 +70,6 @@
  ****************************************************************************/
 
 #ifndef __ASSEMBLY__
-/* Number of registers saved in context switch */
 
 #if defined(CONFIG_HOST_X86_64) && !defined(CONFIG_SIM_M32)
 typedef unsigned long xcpt_reg_t;
@@ -94,6 +93,14 @@ struct xcptcontext
 
 #ifndef __ASSEMBLY__
 
+/****************************************************************************
+ * Name: up_irqinitialize
+ ****************************************************************************/
+
+static inline void up_irqinitialize(void)
+{
+}
+
 /* Name: up_irq_save, up_irq_restore, and friends.
  *
  * NOTE: This function should never be called from application code and,
diff --git a/arch/x86/src/common/up_initialize.c b/arch/x86/src/common/up_initialize.c
index 432672b..e675e8b 100644
--- a/arch/x86/src/common/up_initialize.c
+++ b/arch/x86/src/common/up_initialize.c
@@ -92,10 +92,6 @@ void up_initialize(void)
 
   up_addregion();
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
   /* Initialize the system timer interrupt */
 
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
diff --git a/arch/x86/src/common/up_internal.h b/arch/x86/src/common/up_internal.h
index 8da9f3c..0c1cb3a 100644
--- a/arch/x86/src/common/up_internal.h
+++ b/arch/x86/src/common/up_internal.h
@@ -177,7 +177,6 @@ void x86_boardinitialize(void);
 void up_copystate(uint32_t *dest, uint32_t *src);
 void up_savestate(uint32_t *regs);
 void up_decodeirq(uint32_t *regs);
-void up_irqinitialize(void);
 #ifdef CONFIG_ARCH_DMA
 void weak_function up_dma_initialize(void);
 #endif
diff --git a/arch/xtensa/src/common/xtensa.h b/arch/xtensa/src/common/xtensa.h
index d895444..1c3190a 100644
--- a/arch/xtensa/src/common/xtensa.h
+++ b/arch/xtensa/src/common/xtensa.h
@@ -308,7 +308,6 @@ void xtensa_sig_deliver(void);
 /* Chip specific functions defined in arch/xtensa/src/<chip> */
 /* IRQs */
 
-void xtensa_irq_initialize(void);
 bool xtensa_pending_irq(int irq);
 void xtensa_clrpend_irq(int irq);
 
diff --git a/arch/xtensa/src/common/xtensa_initialize.c b/arch/xtensa/src/common/xtensa_initialize.c
index 922b4a5..015bbed 100644
--- a/arch/xtensa/src/common/xtensa_initialize.c
+++ b/arch/xtensa/src/common/xtensa_initialize.c
@@ -100,10 +100,6 @@ void up_initialize(void)
 
   xtensa_add_region();
 
-  /* Initialize the interrupt subsystem */
-
-  xtensa_irq_initialize();
-
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
   /* Initialize the system timer interrupt */
 
diff --git a/arch/xtensa/src/esp32/esp32_irq.c b/arch/xtensa/src/esp32/esp32_irq.c
index d56a3a0..3f8f267 100644
--- a/arch/xtensa/src/esp32/esp32_irq.c
+++ b/arch/xtensa/src/esp32/esp32_irq.c
@@ -132,10 +132,10 @@ static inline void xtensa_attach_fromcpu1_interrupt(void)
  ****************************************************************************/
 
 /****************************************************************************
- * Name: xtensa_irq_initialize
+ * Name: up_irqinitialize
  ****************************************************************************/
 
-void xtensa_irq_initialize(void)
+void up_irqinitialize(void)
 {
   /* Initialize CPU interrupts */
 
diff --git a/arch/z16/src/common/up_initialize.c b/arch/z16/src/common/up_initialize.c
index 4da1978..a61a910 100644
--- a/arch/z16/src/common/up_initialize.c
+++ b/arch/z16/src/common/up_initialize.c
@@ -105,10 +105,6 @@ void up_initialize(void)
   up_addregion();
 #endif
 
-  /* Initialize the interrupt subsystem */
-
-  up_irqinitialize();
-
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
   /* Initialize the system timer interrupt */
 
diff --git a/arch/z16/src/common/up_internal.h b/arch/z16/src/common/up_internal.h
index 530fcf2..34a7400 100644
--- a/arch/z16/src/common/up_internal.h
+++ b/arch/z16/src/common/up_internal.h
@@ -135,7 +135,6 @@ extern volatile FAR chipreg_t *g_current_regs;
 void up_copystate(FAR chipreg_t *dest, FAR chipreg_t *src);
 FAR chipreg_t *up_doirq(int irq, FAR chipreg_t *regs);
 void up_restoreusercontext(FAR chipreg_t *regs);
-void up_irqinitialize(void);
 int  up_saveusercontext(FAR chipreg_t *regs);
 void up_sigdeliver(void);
 
diff --git a/arch/z80/src/common/up_initialize.c b/arch/z80/src/common/up_initialize.c
index c93c776..5086365 100644
--- a/arch/z80/src/common/up_initialize.c
+++ b/arch/z80/src/common/up_initialize.c
@@ -96,16 +96,6 @@ void up_initialize(void)
   up_addregion();
 #endif
 
-  /* Initialize the interrupt subsystem */
-
-  z80_irq_initialize();
-
-#ifdef CONFIG_RTC_ALARM
-  /* Enable RTC alarm interrupts */
-
-  z80_rtc_irqinitialize();
-#endif
-
 #if !defined(CONFIG_SUPPRESS_INTERRUPTS) && !defined(CONFIG_SUPPRESS_TIMER_INTS)
   /* Initialize the system timer interrupt */
 
diff --git a/arch/z80/src/common/z80_internal.h b/arch/z80/src/common/z80_internal.h
index acd2712..672583c 100644
--- a/arch/z80/src/common/z80_internal.h
+++ b/arch/z80/src/common/z80_internal.h
@@ -104,14 +104,6 @@ extern "C"
 {
 #endif
 
-/* Supplied by chip- or board-specific logic */
-
-void z80_irq_initialize(void);
-
-#ifdef CONFIG_RTC_ALARM
-void z80_rtc_irqinitialize(void);
-#endif
-
 #ifdef USE_LOWSERIALINIT
 void z80_lowserial_initialize(void);
 #endif
diff --git a/arch/z80/src/ez80/ez80_irq.c b/arch/z80/src/ez80/ez80_irq.c
index c55866d..39177fb 100644
--- a/arch/z80/src/ez80/ez80_irq.c
+++ b/arch/z80/src/ez80/ez80_irq.c
@@ -60,10 +60,10 @@ volatile chipreg_t *g_current_regs;
  ****************************************************************************/
 
 /****************************************************************************
- * Name: z80_irq_initialize
+ * Name: up_irqinitialize
  ****************************************************************************/
 
-void z80_irq_initialize(void)
+void up_irqinitialize(void)
 {
   g_current_regs = NULL;
 
diff --git a/arch/z80/src/ez80/ez80_rtc.c b/arch/z80/src/ez80/ez80_rtc.c
index 0a42252..fd3569a 100644
--- a/arch/z80/src/ez80/ez80_rtc.c
+++ b/arch/z80/src/ez80/ez80_rtc.c
@@ -446,34 +446,16 @@ int up_rtc_initialize(void)
 
   outp(EZ80_RTC_CTRL, regval);
 
+#ifdef CONFIG_RTC_ALARM
+  irq_attach(EZ80_RTC_IRQ, ez80_alarm_interrupt, NULL);
+#endif
+
   rtc_dumpregs("After Initialization");
   g_rtc_enabled = true;
   return OK;
 }
 
 /****************************************************************************
- * Name: z80_rtc_irqinitialize
- *
- * Description:
- *   Initialize IRQs for RTC, not possible during up_rtc_initialize because
- *   z80_irq_initialize is called later.
- *
- * Input Parameters:
- *   None
- *
- * Returned Value:
- *   Zero (OK) on success; a negated errno on failure
- *
- ****************************************************************************/
-
-#ifdef CONFIG_RTC_ALARM
-int z80_rtc_irqinitialize(void)
-{
-  return irq_attach(EZ80_RTC_IRQ, ez80_alarm_interrupt, NULL);
-}
-#endif
-
-/****************************************************************************
  * Name: up_rtc_getdatetime
  *
  * Description:
diff --git a/arch/z80/src/z180/z180_irq.c b/arch/z80/src/z180/z180_irq.c
index 9ed7f36..e2e7053 100644
--- a/arch/z80/src/z180/z180_irq.c
+++ b/arch/z80/src/z180/z180_irq.c
@@ -160,14 +160,14 @@ irqstate_t up_irq_enable(void) __naked
 }
 
 /****************************************************************************
- * Name: z80_irq_initialize
+ * Name: up_irqinitialize
  *
  * Description:
  *   Initialize and enable interrupts
  *
  ****************************************************************************/
 
-void z80_irq_initialize(void)
+void up_irqinitialize(void)
 {
   uint16_t vectaddr = (uint16_t)up_vectors;
   uint8_t regval;
diff --git a/arch/z80/src/z8/z8_irq.c b/arch/z80/src/z8/z8_irq.c
index 00e3b2d..8385ebd 100644
--- a/arch/z80/src/z8/z8_irq.c
+++ b/arch/z80/src/z8/z8_irq.c
@@ -60,10 +60,10 @@ struct z8_irqstate_s g_z8irqstate;
  ****************************************************************************/
 
 /****************************************************************************
- * Name: z80_irq_initialize
+ * Name: up_irqinitialize
  ****************************************************************************/
 
-void z80_irq_initialize(void)
+void up_irqinitialize(void)
 {
   /* Clear and disable all interrupts.  Set all to priority 0. */
 
diff --git a/boards/z80/z80/z80sim/src/z80_irq.c b/boards/z80/z80/z80sim/src/z80_irq.c
index 01b2ad9..7dcd960 100644
--- a/boards/z80/z80/z80sim/src/z80_irq.c
+++ b/boards/z80/z80/z80sim/src/z80_irq.c
@@ -55,10 +55,10 @@ int z80sim_timerisr(int irq, FAR chipreg_t *regs);
  ****************************************************************************/
 
 /****************************************************************************
- * Name: z80_irq_initialize
+ * Name: up_irqinitialize
  ****************************************************************************/
 
-void z80_irq_initialize(void)
+void up_irqinitialize(void)
 {
   /* Attach the timer interrupt -- There is not special timer interrupt
    * enable in the simulation so it must be enabled here before interrupts
diff --git a/boards/z80/z80/z80sim/src/z80_timerisr.c b/boards/z80/z80/z80sim/src/z80_timerisr.c
index dd5937b..3863623 100644
--- a/boards/z80/z80/z80sim/src/z80_timerisr.c
+++ b/boards/z80/z80/z80sim/src/z80_timerisr.c
@@ -78,7 +78,7 @@ int z80sim_timerisr(int irq, FAR chipreg_t *regs, void *arg)
 
 void z80_timer_initialize(void)
 {
-  /* The timer interrupt was attached in z80_irq_initialize -- see comments
+  /* The timer interrupt was attached in up_irqinitialize -- see comments
    * there.
    */
 }
diff --git a/include/nuttx/arch.h b/include/nuttx/arch.h
index 7733619..a7665b0 100644
--- a/include/nuttx/arch.h
+++ b/include/nuttx/arch.h
@@ -1332,6 +1332,12 @@ int up_shmdt(uintptr_t vaddr, unsigned int npages);
 /* See prototype in include/nuttx/elf.h */
 
 /****************************************************************************
+ * Name: up_irqinitialize
+ ****************************************************************************/
+
+void up_irqinitialize(void);
+
+/****************************************************************************
  * Name: up_interrupt_context
  *
  * Description:
diff --git a/sched/irq/irq_initialize.c b/sched/irq/irq_initialize.c
index a4ac822..cc024d6 100644
--- a/sched/irq/irq_initialize.c
+++ b/sched/irq/irq_initialize.c
@@ -106,4 +106,6 @@ void irq_initialize(void)
 
   irqchain_initialize();
 #endif
+
+  up_irqinitialize();
 }