This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 5cee996588139e1f3d96b67daca353701c122c73 Author: hujun5 <[email protected]> AuthorDate: Thu Dec 7 21:31:02 2023 +0800 up_putc: int up_putc, enter_critical_section may be called before kernel has been iniitialized,we use spin_lock_irqsave to replace. Signed-off-by: hujun5 <[email protected]> --- arch/arm/src/at32/at32_serial.c | 8 ++++---- arch/arm/src/efm32/efm32_leserial.c | 8 ++++---- arch/arm/src/efm32/efm32_serial.c | 8 ++++---- arch/arm/src/gd32f4/gd32f4xx_serial.c | 8 ++++---- arch/arm/src/kinetis/kinetis_lpserial.c | 8 ++++---- arch/arm/src/kinetis/kinetis_serial.c | 12 ++++++------ arch/arm/src/kl/kl_serial.c | 12 ++++++------ arch/arm/src/lpc54xx/lpc54_lowputc.c | 8 +++++--- arch/arm/src/lpc54xx/lpc54_serial.c | 4 ++-- arch/arm/src/sam34/sam_lowputc.c | 7 ++++--- arch/arm/src/sama5/sam_lowputc.c | 7 ++++--- arch/arm/src/samd2l2/sam_serial.c | 4 ++-- arch/arm/src/samd5e5/sam_serial.c | 4 ++-- arch/arm/src/samv7/sam_lowputc.c | 7 ++++--- arch/arm/src/stm32/stm32_serial.c | 8 ++++---- arch/arm/src/stm32f0l0g0/stm32_serial_v1.c | 4 ++-- arch/arm/src/stm32f0l0g0/stm32_serial_v2.c | 8 ++++---- arch/arm/src/stm32f7/stm32_serial.c | 8 ++++---- arch/arm/src/stm32h7/stm32_serial.c | 8 ++++---- arch/arm/src/stm32l4/stm32l4_serial.c | 8 ++++---- arch/arm/src/stm32l5/stm32l5_serial.c | 8 ++++---- arch/arm/src/stm32u5/stm32_serial.c | 4 ++-- arch/arm/src/stm32wb/stm32wb_serial.c | 8 ++++---- arch/arm/src/stm32wl5/stm32wl5_serial.c | 8 ++++---- arch/arm/src/tms570/tms570_lowputc.c | 7 ++++--- arch/arm/src/xmc4/xmc4_serial.c | 16 ++++++++-------- arch/arm64/src/a64/a64_serial.c | 4 ++-- arch/mips/src/pic32mx/pic32mx_serial.c | 8 ++++---- arch/mips/src/pic32mz/pic32mz_serial.c | 8 ++++---- arch/or1k/src/mor1kx/mor1kx_serial.c | 4 ++-- arch/risc-v/src/bl602/bl602_serial.c | 4 ++-- arch/risc-v/src/c906/c906_serial.c | 8 ++++---- arch/risc-v/src/common/espressif/esp_lowputc.c | 4 ++-- arch/risc-v/src/esp32c3-legacy/esp32c3_lowputc.c | 4 ++-- arch/risc-v/src/fe310/fe310_serial.c | 8 ++++---- arch/risc-v/src/hpm6750/hpm6750_serial.c | 8 ++++---- arch/risc-v/src/k210/k210_serial.c | 8 ++++---- arch/risc-v/src/litex/litex_serial.c | 8 ++++---- arch/risc-v/src/rv32m1/rv32m1_serial.c | 8 ++++---- arch/sparc/src/bm3803/bm3803-serial.c | 8 ++++---- arch/sparc/src/bm3823/bm3823-serial.c | 8 ++++---- arch/xtensa/src/esp32s2/esp32s2_lowputc.c | 4 ++-- arch/z16/src/z16f/z16f_serial.c | 8 ++++---- arch/z80/src/z8/z8_serial.c | 8 ++++---- drivers/serial/uart_16550.c | 12 ++++-------- 45 files changed, 167 insertions(+), 165 deletions(-) diff --git a/arch/arm/src/at32/at32_serial.c b/arch/arm/src/at32/at32_serial.c index b776cd9f7f..05c70cd967 100644 --- a/arch/arm/src/at32/at32_serial.c +++ b/arch/arm/src/at32/at32_serial.c @@ -1118,11 +1118,11 @@ static void up_restoreusartint(struct up_dev_s *priv, uint16_t ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -1133,7 +1133,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -1174,7 +1174,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) up_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/efm32/efm32_leserial.c b/arch/arm/src/efm32/efm32_leserial.c index 4c66ea3525..c8d396cd26 100644 --- a/arch/arm/src/efm32/efm32_leserial.c +++ b/arch/arm/src/efm32/efm32_leserial.c @@ -308,10 +308,10 @@ static void efm32_restoreuartint(struct efm32_leuart_s *priv, uint32_t ien) * bits in ien. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); priv->ien = ien; efm32_setuartint(priv); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -322,14 +322,14 @@ static void efm32_disableuartint(struct efm32_leuart_s *priv, uint32_t *ien) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ien) { *ien = priv->ien; } efm32_restoreuartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/efm32/efm32_serial.c b/arch/arm/src/efm32/efm32_serial.c index 7e32cc1448..e258314207 100644 --- a/arch/arm/src/efm32/efm32_serial.c +++ b/arch/arm/src/efm32/efm32_serial.c @@ -522,10 +522,10 @@ static void efm32_restoreuartint(struct efm32_usart_s *priv, uint32_t ien) * ien */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); priv->ien = ien; efm32_setuartint(priv); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -537,14 +537,14 @@ static void efm32_disableuartint(struct efm32_usart_s *priv, uint32_t *ien) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ien) { *ien = priv->ien; } efm32_restoreuartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif diff --git a/arch/arm/src/gd32f4/gd32f4xx_serial.c b/arch/arm/src/gd32f4/gd32f4xx_serial.c index b401ffc729..348840af55 100644 --- a/arch/arm/src/gd32f4/gd32f4xx_serial.c +++ b/arch/arm/src/gd32f4/gd32f4xx_serial.c @@ -1124,7 +1124,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint32_t *ie) irqstate_t flags; uint32_t ctl_ie; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -1158,7 +1158,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint32_t *ie) ctl_ie = (USART_CFG_CTL_MASK << USART_CFG_SHIFT); up_setusartint(priv, ctl_ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -1169,11 +1169,11 @@ static void up_restoreusartint(struct up_dev_s *priv, uint32_t ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/kinetis/kinetis_lpserial.c b/arch/arm/src/kinetis/kinetis_lpserial.c index ad82d1054e..d7ca5db9eb 100644 --- a/arch/arm/src/kinetis/kinetis_lpserial.c +++ b/arch/arm/src/kinetis/kinetis_lpserial.c @@ -705,10 +705,10 @@ static void kinetis_restoreuartint(struct kinetis_dev_s *priv, uint32_t ie) * ie */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); priv->ie = ie & LPUART_CTRL_ALL_INTS; kinetis_setuartint(priv); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -720,14 +720,14 @@ static void kinetis_disableuartint(struct kinetis_dev_s *priv, uint32_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { *ie = priv->ie; } kinetis_restoreuartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif diff --git a/arch/arm/src/kinetis/kinetis_serial.c b/arch/arm/src/kinetis/kinetis_serial.c index 38a39ab71f..5b6f8f59a8 100644 --- a/arch/arm/src/kinetis/kinetis_serial.c +++ b/arch/arm/src/kinetis/kinetis_serial.c @@ -792,12 +792,12 @@ static void up_setuartint(struct up_dev_s *priv) * ie */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); regval = up_serialin(priv, KINETIS_UART_C2_OFFSET); regval &= ~UART_C2_ALLINTS; regval |= priv->ie; up_serialout(priv, KINETIS_UART_C2_OFFSET, regval); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -812,10 +812,10 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t ie) * ie */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); priv->ie = ie & UART_C2_ALLINTS; up_setuartint(priv); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -827,14 +827,14 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { *ie = priv->ie; } up_restoreuartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif diff --git a/arch/arm/src/kl/kl_serial.c b/arch/arm/src/kl/kl_serial.c index 94fd2d9f7a..4becc1e2c2 100644 --- a/arch/arm/src/kl/kl_serial.c +++ b/arch/arm/src/kl/kl_serial.c @@ -328,12 +328,12 @@ static void up_setuartint(struct up_dev_s *priv) * in ie. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); regval = up_serialin(priv, KL_UART_C2_OFFSET); regval &= ~UART_C2_ALLINTS; regval |= priv->ie; up_serialout(priv, KL_UART_C2_OFFSET, regval); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -348,10 +348,10 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t ie) * in ie. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); priv->ie = ie & UART_C2_ALLINTS; up_setuartint(priv); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -362,14 +362,14 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { *ie = priv->ie; } up_restoreuartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/lpc54xx/lpc54_lowputc.c b/arch/arm/src/lpc54xx/lpc54_lowputc.c index c859665d7e..4360c91b03 100644 --- a/arch/arm/src/lpc54xx/lpc54_lowputc.c +++ b/arch/arm/src/lpc54xx/lpc54_lowputc.c @@ -63,6 +63,8 @@ #include <arch/board/board.h> +#include <nuttx/arch.h> + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -797,18 +799,18 @@ void arm_lowputc(char ch) * atomic. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if ((getreg32(CONSOLE_BASE + LPC54_USART_FIFOSTAT_OFFSET) & USART_FIFOSTAT_TXNOTFULL) != 0) { /* Send the character */ putreg32((uint32_t)ch, CONSOLE_BASE + LPC54_USART_FIFOWR_OFFSET); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return; } - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif } diff --git a/arch/arm/src/lpc54xx/lpc54_serial.c b/arch/arm/src/lpc54xx/lpc54_serial.c index cfaa94e40f..4d62be6222 100644 --- a/arch/arm/src/lpc54xx/lpc54_serial.c +++ b/arch/arm/src/lpc54xx/lpc54_serial.c @@ -922,14 +922,14 @@ static void lpc54_fifoint_disableall(struct lpc54_dev_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (intset) { *intset = lpc54_serialin(priv, LPC54_USART_FIFOINTENCLR_OFFSET); } lpc54_serialout(priv, LPC54_USART_FIFOINTENCLR_OFFSET, USART_FIFOINT_ALL); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/sam34/sam_lowputc.c b/arch/arm/src/sam34/sam_lowputc.c index 3ec9fc51e2..0c2f1078cc 100644 --- a/arch/arm/src/sam34/sam_lowputc.c +++ b/arch/arm/src/sam34/sam_lowputc.c @@ -27,6 +27,7 @@ #include <stdint.h> #include <nuttx/irq.h> +#include <nuttx/arch.h> #include "arm_internal.h" #include "sam_gpio.h" @@ -277,18 +278,18 @@ void arm_lowputc(char ch) * atomic. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if ((getreg32(SAM_CONSOLE_BASE + SAM_UART_SR_OFFSET) & UART_INT_TXEMPTY) != 0) { /* Send the character */ putreg32((uint32_t)ch, SAM_CONSOLE_BASE + SAM_UART_THR_OFFSET); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return; } - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif } diff --git a/arch/arm/src/sama5/sam_lowputc.c b/arch/arm/src/sama5/sam_lowputc.c index 9caf822362..51130a3ad6 100644 --- a/arch/arm/src/sama5/sam_lowputc.c +++ b/arch/arm/src/sama5/sam_lowputc.c @@ -27,6 +27,7 @@ #include <stdint.h> #include <nuttx/irq.h> +#include <nuttx/arch.h> #include "arm_internal.h" #include "sam_pio.h" @@ -235,18 +236,18 @@ void arm_lowputc(char ch) * atomic. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if ((getreg32(SAM_CONSOLE_VBASE + SAM_UART_SR_OFFSET) & UART_INT_TXEMPTY) != 0) { /* Send the character */ putreg32((uint32_t)ch, SAM_CONSOLE_VBASE + SAM_UART_THR_OFFSET); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return; } - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #elif defined(SAMA5_HAVE_FLEXCOM_CONSOLE) diff --git a/arch/arm/src/samd2l2/sam_serial.c b/arch/arm/src/samd2l2/sam_serial.c index 3fd443b191..342548fc6a 100644 --- a/arch/arm/src/samd2l2/sam_serial.c +++ b/arch/arm/src/samd2l2/sam_serial.c @@ -1045,7 +1045,7 @@ int up_putc(int ch) * interrupts from firing in the serial driver code. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); /* Check for LF */ @@ -1057,7 +1057,7 @@ int up_putc(int ch) } sam_lowputc(ch); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); #endif return ch; } diff --git a/arch/arm/src/samd5e5/sam_serial.c b/arch/arm/src/samd5e5/sam_serial.c index bfd460d92c..c5b3687419 100644 --- a/arch/arm/src/samd5e5/sam_serial.c +++ b/arch/arm/src/samd5e5/sam_serial.c @@ -1104,7 +1104,7 @@ int up_putc(int ch) * interrupts from firing in the serial driver code. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); /* Check for LF */ @@ -1116,7 +1116,7 @@ int up_putc(int ch) } sam_lowputc(ch); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); #endif return ch; } diff --git a/arch/arm/src/samv7/sam_lowputc.c b/arch/arm/src/samv7/sam_lowputc.c index 2fbfdf79f2..2aeda3820d 100644 --- a/arch/arm/src/samv7/sam_lowputc.c +++ b/arch/arm/src/samv7/sam_lowputc.c @@ -27,6 +27,7 @@ #include <stdint.h> #include <nuttx/irq.h> +#include <nuttx/arch.h> #include <arch/board/board.h> #include "arm_internal.h" @@ -183,18 +184,18 @@ void arm_lowputc(char ch) * atomic. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if ((getreg32(SAM_CONSOLE_BASE + SAM_UART_SR_OFFSET) & UART_INT_TXEMPTY) != 0) { /* Send the character */ putreg32((uint32_t)ch, SAM_CONSOLE_BASE + SAM_UART_THR_OFFSET); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return; } - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif } diff --git a/arch/arm/src/stm32/stm32_serial.c b/arch/arm/src/stm32/stm32_serial.c index a198a795d2..ca5010446c 100644 --- a/arch/arm/src/stm32/stm32_serial.c +++ b/arch/arm/src/stm32/stm32_serial.c @@ -1339,11 +1339,11 @@ static void up_restoreusartint(struct up_dev_s *priv, uint16_t ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -1354,7 +1354,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -1395,7 +1395,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) up_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32f0l0g0/stm32_serial_v1.c b/arch/arm/src/stm32f0l0g0/stm32_serial_v1.c index 4b572fffea..770aacb4dc 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_serial_v1.c +++ b/arch/arm/src/stm32f0l0g0/stm32_serial_v1.c @@ -803,7 +803,7 @@ static void stm32serial_disableusartint(struct stm32_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -847,7 +847,7 @@ static void stm32serial_disableusartint(struct stm32_serial_s *priv, stm32serial_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32f0l0g0/stm32_serial_v2.c b/arch/arm/src/stm32f0l0g0/stm32_serial_v2.c index 19d88d613e..2c2a701ee8 100644 --- a/arch/arm/src/stm32f0l0g0/stm32_serial_v2.c +++ b/arch/arm/src/stm32f0l0g0/stm32_serial_v2.c @@ -531,11 +531,11 @@ static void up_restoreusartint(struct up_dev_s *priv, uint16_t ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -546,7 +546,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -590,7 +590,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) up_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32f7/stm32_serial.c b/arch/arm/src/stm32f7/stm32_serial.c index 14b7c3cb14..691823f8b4 100644 --- a/arch/arm/src/stm32f7/stm32_serial.c +++ b/arch/arm/src/stm32f7/stm32_serial.c @@ -1405,11 +1405,11 @@ static void up_restoreusartint(struct up_dev_s *priv, uint16_t ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -1420,7 +1420,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -1464,7 +1464,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) up_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32h7/stm32_serial.c b/arch/arm/src/stm32h7/stm32_serial.c index cc9f38dca7..ee33b6a5bc 100644 --- a/arch/arm/src/stm32h7/stm32_serial.c +++ b/arch/arm/src/stm32h7/stm32_serial.c @@ -1566,11 +1566,11 @@ static void up_restoreusartint(struct up_dev_s *priv, uint16_t ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif @@ -1582,7 +1582,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -1626,7 +1626,7 @@ static void up_disableusartint(struct up_dev_s *priv, uint16_t *ie) up_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32l4/stm32l4_serial.c b/arch/arm/src/stm32l4/stm32l4_serial.c index c6b4c90345..648fc995ba 100644 --- a/arch/arm/src/stm32l4/stm32l4_serial.c +++ b/arch/arm/src/stm32l4/stm32l4_serial.c @@ -901,11 +901,11 @@ static void stm32l4serial_restoreusartint(struct stm32l4_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); stm32l4serial_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -917,7 +917,7 @@ static void stm32l4serial_disableusartint(struct stm32l4_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -965,7 +965,7 @@ static void stm32l4serial_disableusartint(struct stm32l4_serial_s *priv, stm32l4serial_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32l5/stm32l5_serial.c b/arch/arm/src/stm32l5/stm32l5_serial.c index ee3e466183..b483d1835f 100644 --- a/arch/arm/src/stm32l5/stm32l5_serial.c +++ b/arch/arm/src/stm32l5/stm32l5_serial.c @@ -906,11 +906,11 @@ static void stm32l5serial_restoreusartint(struct stm32l5_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); stm32l5serial_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -922,7 +922,7 @@ static void stm32l5serial_disableusartint(struct stm32l5_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -965,7 +965,7 @@ static void stm32l5serial_disableusartint(struct stm32l5_serial_s *priv, stm32l5serial_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32u5/stm32_serial.c b/arch/arm/src/stm32u5/stm32_serial.c index 5ce2fecfd7..97f90300e2 100644 --- a/arch/arm/src/stm32u5/stm32_serial.c +++ b/arch/arm/src/stm32u5/stm32_serial.c @@ -922,7 +922,7 @@ static void stm32serial_disableusartint(struct stm32_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -965,7 +965,7 @@ static void stm32serial_disableusartint(struct stm32_serial_s *priv, stm32serial_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32wb/stm32wb_serial.c b/arch/arm/src/stm32wb/stm32wb_serial.c index 889061620c..b83a23ff69 100644 --- a/arch/arm/src/stm32wb/stm32wb_serial.c +++ b/arch/arm/src/stm32wb/stm32wb_serial.c @@ -556,11 +556,11 @@ static void stm32wb_serial_restoreusartint(struct stm32wb_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); stm32wb_serial_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -572,7 +572,7 @@ static void stm32wb_serial_disableusartint(struct stm32wb_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -620,7 +620,7 @@ static void stm32wb_serial_disableusartint(struct stm32wb_serial_s *priv, stm32wb_serial_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/stm32wl5/stm32wl5_serial.c b/arch/arm/src/stm32wl5/stm32wl5_serial.c index 660ca12424..037bbbcfa5 100644 --- a/arch/arm/src/stm32wl5/stm32wl5_serial.c +++ b/arch/arm/src/stm32wl5/stm32wl5_serial.c @@ -661,11 +661,11 @@ static void stm32wl5serial_restoreusartint(struct stm32wl5_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); stm32wl5serial_setusartint(priv, ie); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -677,7 +677,7 @@ static void stm32wl5serial_disableusartint(struct stm32wl5_serial_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ie) { @@ -720,7 +720,7 @@ static void stm32wl5serial_disableusartint(struct stm32wl5_serial_s *priv, stm32wl5serial_setusartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm/src/tms570/tms570_lowputc.c b/arch/arm/src/tms570/tms570_lowputc.c index 599c2f7475..9f7232460b 100644 --- a/arch/arm/src/tms570/tms570_lowputc.c +++ b/arch/arm/src/tms570/tms570_lowputc.c @@ -50,6 +50,7 @@ #include <errno.h> #include <nuttx/irq.h> +#include <nuttx/arch.h> #include <arch/board/board.h> #include "arm_internal.h" @@ -200,18 +201,18 @@ void arm_lowputc(char ch) * atomic. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if ((getreg32(TMS570_CONSOLE_BASE + TMS570_SCI_FLR_OFFSET) & SCI_FLR_TXRDY) != 0) { /* Send the character */ putreg32((uint32_t)ch, TMS570_CONSOLE_BASE + TMS570_SCI_TD_OFFSET); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return; } - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } #endif } diff --git a/arch/arm/src/xmc4/xmc4_serial.c b/arch/arm/src/xmc4/xmc4_serial.c index d8a840bcfd..d5bef7c3ab 100644 --- a/arch/arm/src/xmc4/xmc4_serial.c +++ b/arch/arm/src/xmc4/xmc4_serial.c @@ -551,14 +551,14 @@ static inline void xmc4_modifyreg(struct xmc4_dev_s *priv, unsigned uintptr_t regaddr = priv->uartbase + offset; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); regval = getreg32(regaddr); regval &= ~clrbits; regval |= setbits; putreg32(regval, regaddr); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -573,9 +573,9 @@ static void xmc4_setuartint(struct xmc4_dev_s *priv) * bits in priv->ccr. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); xmc4_modifyreg(priv, XMC4_USIC_CCR_OFFSET, CCR_ALL_EVENTS, priv->ccr); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -590,10 +590,10 @@ static void xmc4_restoreuartint(struct xmc4_dev_s *priv, uint32_t ccr) * in the ccr argument. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); priv->ccr = ccr; xmc4_setuartint(priv); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -604,14 +604,14 @@ static void xmc4_disableuartint(struct xmc4_dev_s *priv, uint32_t *ccr) { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (ccr) { *ccr = priv->ccr; } xmc4_restoreuartint(priv, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/arm64/src/a64/a64_serial.c b/arch/arm64/src/a64/a64_serial.c index 03ee3b104f..90ab577c19 100644 --- a/arch/arm64/src/a64/a64_serial.c +++ b/arch/arm64/src/a64/a64_serial.c @@ -965,7 +965,7 @@ static int a64_uart_init(uint32_t gating, uint32_t rst, pio_pinset_t tx, irqstate_t flags; int ret = OK; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); /* Enable clocking to UART */ @@ -991,7 +991,7 @@ static int a64_uart_init(uint32_t gating, uint32_t rst, pio_pinset_t tx, } } - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return ret; }; diff --git a/arch/mips/src/pic32mx/pic32mx_serial.c b/arch/mips/src/pic32mx/pic32mx_serial.c index 24d81d5336..1726f628d5 100644 --- a/arch/mips/src/pic32mx/pic32mx_serial.c +++ b/arch/mips/src/pic32mx/pic32mx_serial.c @@ -305,10 +305,10 @@ static void up_restoreuartint(struct uart_dev_s *dev, uint8_t im) * of bits in im. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_rxint(dev, RX_ENABLED(im)); up_txint(dev, TX_ENABLED(im)); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -320,14 +320,14 @@ static void up_disableuartint(struct uart_dev_s *dev, uint8_t *im) struct up_dev_s *priv = (struct up_dev_s *)dev->priv; irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (im) { *im = priv->im; } up_restoreuartint(dev, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/mips/src/pic32mz/pic32mz_serial.c b/arch/mips/src/pic32mz/pic32mz_serial.c index d1db65104e..8f5353010e 100644 --- a/arch/mips/src/pic32mz/pic32mz_serial.c +++ b/arch/mips/src/pic32mz/pic32mz_serial.c @@ -622,10 +622,10 @@ static void up_restoreuartint(struct uart_dev_s *dev, uint8_t im) * in im */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_rxint(dev, RX_ENABLED(im)); up_txint(dev, TX_ENABLED(im)); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -637,14 +637,14 @@ static void up_disableuartint(struct uart_dev_s *dev, uint8_t *im) struct up_dev_s *priv = (struct up_dev_s *)dev->priv; irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (im) { *im = priv->im; } up_restoreuartint(dev, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/or1k/src/mor1kx/mor1kx_serial.c b/arch/or1k/src/mor1kx/mor1kx_serial.c index e57a54ce68..0bebdcdec3 100644 --- a/arch/or1k/src/mor1kx/mor1kx_serial.c +++ b/arch/or1k/src/mor1kx/mor1kx_serial.c @@ -115,7 +115,7 @@ int up_putc(int ch) * interrupts from firing in the serial driver code. */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); /* Check for LF */ @@ -128,7 +128,7 @@ int up_putc(int ch) /* or1k_lowputc(ch); */ - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); #endif return ch; } diff --git a/arch/risc-v/src/bl602/bl602_serial.c b/arch/risc-v/src/bl602/bl602_serial.c index 21db1149ea..f9b5d03334 100644 --- a/arch/risc-v/src/bl602/bl602_serial.c +++ b/arch/risc-v/src/bl602/bl602_serial.c @@ -888,7 +888,7 @@ void riscv_serialinit(void) int up_putc(int ch) { #ifdef HAVE_SERIAL_CONSOLE - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); /* Check for LF */ @@ -900,7 +900,7 @@ int up_putc(int ch) } riscv_lowputc(ch); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); #endif return ch; } diff --git a/arch/risc-v/src/c906/c906_serial.c b/arch/risc-v/src/c906/c906_serial.c index e7e43837fb..fb1341d115 100644 --- a/arch/risc-v/src/c906/c906_serial.c +++ b/arch/risc-v/src/c906/c906_serial.c @@ -214,12 +214,12 @@ static void up_serialout(struct up_dev_s *priv, int offset, uint32_t value) static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); priv->im = im; up_serialout(priv, UART_IE_OFFSET, im); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -228,7 +228,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); /* Return the current interrupt mask value */ @@ -241,7 +241,7 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) priv->im = 0; up_serialout(priv, UART_IE_OFFSET, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/common/espressif/esp_lowputc.c b/arch/risc-v/src/common/espressif/esp_lowputc.c index c2d07743ac..e630a70b83 100644 --- a/arch/risc-v/src/common/espressif/esp_lowputc.c +++ b/arch/risc-v/src/common/espressif/esp_lowputc.c @@ -207,7 +207,7 @@ void esp_lowputc_disable_all_uart_int(const struct esp_uart_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (current_status != NULL) { @@ -224,7 +224,7 @@ void esp_lowputc_disable_all_uart_int(const struct esp_uart_s *priv, uart_hal_clr_intsts_mask(priv->hal, UINT32_MAX); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/esp32c3-legacy/esp32c3_lowputc.c b/arch/risc-v/src/esp32c3-legacy/esp32c3_lowputc.c index 2afa7e3f4c..d5a36999b5 100644 --- a/arch/risc-v/src/esp32c3-legacy/esp32c3_lowputc.c +++ b/arch/risc-v/src/esp32c3-legacy/esp32c3_lowputc.c @@ -710,7 +710,7 @@ void esp32c3_lowputc_disable_all_uart_int(const struct esp32c3_uart_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (current_status != NULL) { @@ -727,7 +727,7 @@ void esp32c3_lowputc_disable_all_uart_int(const struct esp32c3_uart_s *priv, putreg32(0xffffffff, UART_INT_CLR_REG(priv->id)); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/fe310/fe310_serial.c b/arch/risc-v/src/fe310/fe310_serial.c index 5e04afabef..9250ce3098 100644 --- a/arch/risc-v/src/fe310/fe310_serial.c +++ b/arch/risc-v/src/fe310/fe310_serial.c @@ -214,12 +214,12 @@ static void up_serialout(struct up_dev_s *priv, int offset, uint32_t value) static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); priv->im = im; up_serialout(priv, UART_IE_OFFSET, im); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -228,7 +228,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); /* Return the current interrupt mask value */ @@ -241,7 +241,7 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) priv->im = 0; up_serialout(priv, UART_IE_OFFSET, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/hpm6750/hpm6750_serial.c b/arch/risc-v/src/hpm6750/hpm6750_serial.c index 5ea38e7754..c18dafd44c 100644 --- a/arch/risc-v/src/hpm6750/hpm6750_serial.c +++ b/arch/risc-v/src/hpm6750/hpm6750_serial.c @@ -233,12 +233,12 @@ static void up_serialmodfiy(struct up_dev_s *priv, int offset, static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); priv->im = im; up_serialout(priv, UART_IER_OFFSET, im); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -247,7 +247,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); /* Return the current interrupt mask value */ @@ -260,7 +260,7 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) priv->im = 0; up_serialout(priv, UART_IER_OFFSET, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/k210/k210_serial.c b/arch/risc-v/src/k210/k210_serial.c index 16cd880d9a..4179c7fe7a 100644 --- a/arch/risc-v/src/k210/k210_serial.c +++ b/arch/risc-v/src/k210/k210_serial.c @@ -214,12 +214,12 @@ static void up_serialout(struct up_dev_s *priv, int offset, uint32_t value) static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); priv->im = im; up_serialout(priv, UART_IE_OFFSET, im); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -228,7 +228,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); /* Return the current interrupt mask value */ @@ -241,7 +241,7 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) priv->im = 0; up_serialout(priv, UART_IE_OFFSET, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/litex/litex_serial.c b/arch/risc-v/src/litex/litex_serial.c index 21fc262a26..919ed9faa9 100644 --- a/arch/risc-v/src/litex/litex_serial.c +++ b/arch/risc-v/src/litex/litex_serial.c @@ -237,7 +237,7 @@ static void up_serialout(struct up_dev_s *priv, int offset, uint32_t value) static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); priv->im = im; @@ -245,7 +245,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) LITEX_CONSOLE_BASE + UART_EV_PENDING_OFFSET); up_serialout(priv, UART_EV_ENABLE_OFFSET, im); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -254,7 +254,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint8_t im) static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); /* Return the current interrupt mask value */ @@ -271,7 +271,7 @@ static void up_disableuartint(struct up_dev_s *priv, uint8_t *im) LITEX_CONSOLE_BASE + UART_EV_PENDING_OFFSET); up_serialout(priv, UART_EV_ENABLE_OFFSET, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/risc-v/src/rv32m1/rv32m1_serial.c b/arch/risc-v/src/rv32m1/rv32m1_serial.c index cbc2a1be36..093f3eccc7 100644 --- a/arch/risc-v/src/rv32m1/rv32m1_serial.c +++ b/arch/risc-v/src/rv32m1/rv32m1_serial.c @@ -343,11 +343,11 @@ static void up_putreg(struct up_dev_s *priv, int offset, uint32_t value) static void up_restoreuartint(struct up_dev_s *priv, uint32_t im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); up_putreg(priv, RV32M1_LPUART_CTRL_OFFSET, im); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -356,7 +356,7 @@ static void up_restoreuartint(struct up_dev_s *priv, uint32_t im) static void up_disableuartint(struct up_dev_s *priv, uint32_t *im) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); uint32_t regval = up_getreg(priv, RV32M1_LPUART_CTRL_OFFSET); /* Return the current interrupt mask value */ @@ -371,7 +371,7 @@ static void up_disableuartint(struct up_dev_s *priv, uint32_t *im) regval &= ~(LPUART_CTRL_TCIE | LPUART_CTRL_TIE | LPUART_CTRL_RIE); up_putreg(priv, RV32M1_LPUART_CTRL_OFFSET, regval); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/sparc/src/bm3803/bm3803-serial.c b/arch/sparc/src/bm3803/bm3803-serial.c index 3d41b64465..b6911025f5 100644 --- a/arch/sparc/src/bm3803/bm3803-serial.c +++ b/arch/sparc/src/bm3803/bm3803-serial.c @@ -359,10 +359,10 @@ static void up_restoreuartint(struct uart_dev_s *dev, uint8_t im) * in im */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_rxint(dev, RX_ENABLED(im)); up_txint(dev, TX_ENABLED(im)); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -374,14 +374,14 @@ static void up_disableuartint(struct uart_dev_s *dev, uint8_t *im) struct up_dev_s *priv = (struct up_dev_s *)dev->priv; irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (im) { *im = priv->im; } up_restoreuartint(dev, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/sparc/src/bm3823/bm3823-serial.c b/arch/sparc/src/bm3823/bm3823-serial.c index 6d5aa07c0e..12ccba4b04 100644 --- a/arch/sparc/src/bm3823/bm3823-serial.c +++ b/arch/sparc/src/bm3823/bm3823-serial.c @@ -361,10 +361,10 @@ static void up_restoreuartint(struct uart_dev_s *dev, uint8_t im) * im */ - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); up_rxint(dev, RX_ENABLED(im)); up_txint(dev, TX_ENABLED(im)); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** @@ -376,14 +376,14 @@ static void up_disableuartint(struct uart_dev_s *dev, uint8_t *im) struct up_dev_s *priv = (struct up_dev_s *)dev->priv; irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (im) { *im = priv->im; } up_restoreuartint(dev, 0); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/xtensa/src/esp32s2/esp32s2_lowputc.c b/arch/xtensa/src/esp32s2/esp32s2_lowputc.c index a5bb7b01c6..423b5907eb 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_lowputc.c +++ b/arch/xtensa/src/esp32s2/esp32s2_lowputc.c @@ -653,7 +653,7 @@ void esp32s2_lowputc_disable_all_uart_int(const struct esp32s2_uart_s *priv, { irqstate_t flags; - flags = enter_critical_section(); + flags = spin_lock_irqsave(NULL); if (current_status != NULL) { @@ -670,7 +670,7 @@ void esp32s2_lowputc_disable_all_uart_int(const struct esp32s2_uart_s *priv, putreg32(UINT32_MAX, UART_INT_CLR_REG(priv->id)); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/z16/src/z16f/z16f_serial.c b/arch/z16/src/z16f/z16f_serial.c index a177e98401..82d3933066 100644 --- a/arch/z16/src/z16f/z16f_serial.c +++ b/arch/z16/src/z16f/z16f_serial.c @@ -213,7 +213,7 @@ static uart_dev_t g_uart1port; static uint8_t z16f_disableuartirq(struct uart_dev_s *dev) { struct z16f_uart_s *priv = (struct z16f_uart_s *)dev->priv; - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); uint8_t state = priv->rxenabled ? STATE_RXENABLED : STATE_DISABLED | priv->txenabled ? STATE_TXENABLED : @@ -222,7 +222,7 @@ static uint8_t z16f_disableuartirq(struct uart_dev_s *dev) z16f_txint(dev, false); z16f_rxint(dev, false); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return state; } @@ -232,12 +232,12 @@ static uint8_t z16f_disableuartirq(struct uart_dev_s *dev) static void z16f_restoreuartirq(struct uart_dev_s *dev, uint8_t state) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); z16f_txint(dev, (state & STATE_TXENABLED) ? true : false); z16f_rxint(dev, (state & STATE_RXENABLED) ? true : false); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/arch/z80/src/z8/z8_serial.c b/arch/z80/src/z8/z8_serial.c index 31c2e7a91b..e997a254cd 100644 --- a/arch/z80/src/z8/z8_serial.c +++ b/arch/z80/src/z8/z8_serial.c @@ -253,7 +253,7 @@ static inline uint8_t z8_getuart(FAR struct z8_uart_s *priv, uint8_t offset) static uint8_t z8_disableuartirq(FAR struct uart_dev_s *dev) { struct z8_uart_s *priv = (struct z8_uart_s *)dev->priv; - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); uint8_t state = priv->rxenabled ? STATE_RXENABLED : STATE_DISABLED | \ priv->txenabled ? @@ -262,7 +262,7 @@ static uint8_t z8_disableuartirq(FAR struct uart_dev_s *dev) z8_txint(dev, false); z8_rxint(dev, false); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); return state; } @@ -272,12 +272,12 @@ static uint8_t z8_disableuartirq(FAR struct uart_dev_s *dev) static void z8_restoreuartirq(FAR struct uart_dev_s *dev, uint8_t state) { - irqstate_t flags = enter_critical_section(); + irqstate_t flags = spin_lock_irqsave(NULL); z8_txint(dev, (state & STATE_TXENABLED) ? true : false); z8_rxint(dev, (state & STATE_RXENABLED) ? true : false); - leave_critical_section(flags); + spin_unlock_irqrestore(NULL, flags); } /**************************************************************************** diff --git a/drivers/serial/uart_16550.c b/drivers/serial/uart_16550.c index 8d5d3ccc85..747383a6f5 100644 --- a/drivers/serial/uart_16550.c +++ b/drivers/serial/uart_16550.c @@ -1694,8 +1694,12 @@ static bool u16550_txempty(struct uart_dev_s *dev) #ifdef HAVE_16550_CONSOLE static void u16550_putc(FAR struct u16550_s *priv, int ch) { + irqstate_t flags; + + flags = spin_lock_irqsave(NULL); while ((u16550_serialin(priv, UART_LSR_OFFSET) & UART_LSR_THRE) == 0); u16550_serialout(priv, UART_THR_OFFSET, (uart_datawidth_t)ch); + spin_unlock_irqrestore(NULL, flags); } #endif @@ -1768,13 +1772,6 @@ void u16550_serialinit(void) int up_putc(int ch) { FAR struct u16550_s *priv = (FAR struct u16550_s *)CONSOLE_DEV.priv; - irqstate_t flags; - - /* All interrupts must be disabled to prevent re-entrancy and to prevent - * interrupts from firing in the serial driver code. - */ - - flags = enter_critical_section(); /* Check for LF */ @@ -1786,7 +1783,6 @@ int up_putc(int ch) } u16550_putc(priv, ch); - leave_critical_section(flags); return ch; }
