diff --git a/arch/arm/src/common/arm_modifyreg32.c b/arch/arm/src/common/arm_modifyreg32.c index b98bdc3ae3f..ccc7d75829c 100644 --- a/arch/arm/src/common/arm_modifyreg32.c +++ b/arch/arm/src/common/arm_modifyreg32.c @@ -33,6 +33,12 @@ #include "arm_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/arm/src/common/arm_modifyreg8.c b/arch/arm/src/common/arm_modifyreg8.c index a3449951174..0e40bc1b5f8 100644 --- a/arch/arm/src/common/arm_modifyreg8.c +++ b/arch/arm/src/common/arm_modifyreg8.c @@ -33,6 +33,12 @@ #include "arm_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/arm64/src/common/arm64_modifyreg32.c b/arch/arm64/src/common/arm64_modifyreg32.c index 1dd9008c014..25e5405fea1 100644 --- a/arch/arm64/src/common/arm64_modifyreg32.c +++ b/arch/arm64/src/common/arm64_modifyreg32.c @@ -33,6 +33,12 @@ #include "arm64_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/arm64/src/common/arm64_modifyreg8.c b/arch/arm64/src/common/arm64_modifyreg8.c index 7ab314b3e3b..900d6f2af92 100644 --- a/arch/arm64/src/common/arm64_modifyreg8.c +++ b/arch/arm64/src/common/arm64_modifyreg8.c @@ -33,6 +33,12 @@ #include "arm64_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/avr/src/common/avr_modifyreg32.c b/arch/avr/src/common/avr_modifyreg32.c index a4733773b94..1dd46666391 100644 --- a/arch/avr/src/common/avr_modifyreg32.c +++ b/arch/avr/src/common/avr_modifyreg32.c @@ -31,6 +31,7 @@ #include #include +#include #include "avr_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/avr/src/common/avr_modifyreg8.c b/arch/avr/src/common/avr_modifyreg8.c index 7419750c03c..59bb0fbd793 100644 --- a/arch/avr/src/common/avr_modifyreg8.c +++ b/arch/avr/src/common/avr_modifyreg8.c @@ -31,6 +31,7 @@ #include #include +#include #include "avr_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/ceva/src/common/ceva_modifyreg32.c b/arch/ceva/src/common/ceva_modifyreg32.c index af64f365f4b..5fd84ad3e0a 100644 --- a/arch/ceva/src/common/ceva_modifyreg32.c +++ b/arch/ceva/src/common/ceva_modifyreg32.c @@ -29,6 +29,12 @@ #include "ceva_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -46,10 +52,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/ceva/src/common/ceva_modifyreg8.c b/arch/ceva/src/common/ceva_modifyreg8.c index c0c1c78beb1..b91ca92fe20 100644 --- a/arch/ceva/src/common/ceva_modifyreg8.c +++ b/arch/ceva/src/common/ceva_modifyreg8.c @@ -29,6 +29,12 @@ #include "ceva_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -46,10 +52,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - spin_unlock_irqrestore(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/hc/src/common/hc_modifyreg32.c b/arch/hc/src/common/hc_modifyreg32.c index b10296f720e..0ac164a31d0 100644 --- a/arch/hc/src/common/hc_modifyreg32.c +++ b/arch/hc/src/common/hc_modifyreg32.c @@ -31,6 +31,7 @@ #include #include +#include #include "hc_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/hc/src/common/hc_modifyreg8.c b/arch/hc/src/common/hc_modifyreg8.c index 05e08e9f1e9..e18263c8eb0 100644 --- a/arch/hc/src/common/hc_modifyreg8.c +++ b/arch/hc/src/common/hc_modifyreg8.c @@ -31,6 +31,7 @@ #include #include +#include #include "hc_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/mips/src/common/mips_modifyreg32.c b/arch/mips/src/common/mips_modifyreg32.c index a6ea0c1c210..59364f48ff8 100644 --- a/arch/mips/src/common/mips_modifyreg32.c +++ b/arch/mips/src/common/mips_modifyreg32.c @@ -31,6 +31,7 @@ #include #include +#include #include "mips_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/mips/src/common/mips_modifyreg8.c b/arch/mips/src/common/mips_modifyreg8.c index 43884a583ce..fac89d1776d 100644 --- a/arch/mips/src/common/mips_modifyreg8.c +++ b/arch/mips/src/common/mips_modifyreg8.c @@ -31,6 +31,7 @@ #include #include +#include #include "mips_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/misoc/src/common/misoc_modifyreg32.c b/arch/misoc/src/common/misoc_modifyreg32.c index 2a5d372efce..6d02b36367d 100644 --- a/arch/misoc/src/common/misoc_modifyreg32.c +++ b/arch/misoc/src/common/misoc_modifyreg32.c @@ -31,9 +31,16 @@ #include #include +#include #include "misoc.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -51,10 +58,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/misoc/src/common/misoc_modifyreg8.c b/arch/misoc/src/common/misoc_modifyreg8.c index 7eda3878d99..207d8fe0dcd 100644 --- a/arch/misoc/src/common/misoc_modifyreg8.c +++ b/arch/misoc/src/common/misoc_modifyreg8.c @@ -31,9 +31,16 @@ #include #include +#include #include "misoc.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -51,10 +58,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/or1k/src/common/or1k_modifyreg32.c b/arch/or1k/src/common/or1k_modifyreg32.c index c079d323236..7e56c0d308f 100644 --- a/arch/or1k/src/common/or1k_modifyreg32.c +++ b/arch/or1k/src/common/or1k_modifyreg32.c @@ -33,6 +33,12 @@ #include "or1k_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/or1k/src/common/or1k_modifyreg8.c b/arch/or1k/src/common/or1k_modifyreg8.c index c378b542a03..32783b168c0 100644 --- a/arch/or1k/src/common/or1k_modifyreg8.c +++ b/arch/or1k/src/common/or1k_modifyreg8.c @@ -33,6 +33,12 @@ #include "or1k_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/risc-v/src/common/riscv_modifyreg32.c b/arch/risc-v/src/common/riscv_modifyreg32.c index 478351764e9..93b5d27712a 100644 --- a/arch/risc-v/src/common/riscv_modifyreg32.c +++ b/arch/risc-v/src/common/riscv_modifyreg32.c @@ -33,6 +33,12 @@ #include "riscv_internal.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -50,10 +56,10 @@ void modifyreg32(uintreg_t addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/sparc/src/common/sparc_modifyreg32.c b/arch/sparc/src/common/sparc_modifyreg32.c index 899d06670e4..9e42428cd82 100644 --- a/arch/sparc/src/common/sparc_modifyreg32.c +++ b/arch/sparc/src/common/sparc_modifyreg32.c @@ -42,6 +42,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,11 +65,11 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/sparc/src/common/sparc_modifyreg8.c b/arch/sparc/src/common/sparc_modifyreg8.c index 3b5d6b36951..a91cd271f86 100644 --- a/arch/sparc/src/common/sparc_modifyreg8.c +++ b/arch/sparc/src/common/sparc_modifyreg8.c @@ -42,6 +42,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,11 +65,11 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/x86/src/common/x86_modifyreg32.c b/arch/x86/src/common/x86_modifyreg32.c index 2f4f30935c0..8b4b61d5a3e 100644 --- a/arch/x86/src/common/x86_modifyreg32.c +++ b/arch/x86/src/common/x86_modifyreg32.c @@ -31,6 +31,7 @@ #include #include +#include #include "x86_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32((uint16_t)addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, (uint16_t)addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/x86/src/common/x86_modifyreg8.c b/arch/x86/src/common/x86_modifyreg8.c index 03d1169fed4..2145e72e29d 100644 --- a/arch/x86/src/common/x86_modifyreg8.c +++ b/arch/x86/src/common/x86_modifyreg8.c @@ -31,6 +31,7 @@ #include #include +#include #include "x86_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8((uint16_t)addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, (uint16_t)addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/x86_64/src/common/x86_64_modifyreg32.c b/arch/x86_64/src/common/x86_64_modifyreg32.c index 44427620f1f..c1e182a7e52 100644 --- a/arch/x86_64/src/common/x86_64_modifyreg32.c +++ b/arch/x86_64/src/common/x86_64_modifyreg32.c @@ -31,6 +31,7 @@ #include #include +#include #include "x86_64_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32((uint16_t)addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, (uint16_t)addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/x86_64/src/common/x86_64_modifyreg8.c b/arch/x86_64/src/common/x86_64_modifyreg8.c index 9593752ac6b..0970eb3f6e2 100644 --- a/arch/x86_64/src/common/x86_64_modifyreg8.c +++ b/arch/x86_64/src/common/x86_64_modifyreg8.c @@ -31,6 +31,7 @@ #include #include +#include #include "x86_64_internal.h" @@ -42,6 +43,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -63,10 +66,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8((uint16_t)addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, (uint16_t)addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/xtensa/src/common/xtensa_modifyreg32.c b/arch/xtensa/src/common/xtensa_modifyreg32.c index 11028c1c533..6ad6b235fe4 100644 --- a/arch/xtensa/src/common/xtensa_modifyreg32.c +++ b/arch/xtensa/src/common/xtensa_modifyreg32.c @@ -35,6 +35,12 @@ #include "xtensa.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -52,10 +58,10 @@ void modifyreg32(unsigned int addr, uint32_t clearbits, uint32_t setbits) irqstate_t flags; uint32_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg32(addr); regval &= ~clearbits; regval |= setbits; putreg32(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/xtensa/src/common/xtensa_modifyreg8.c b/arch/xtensa/src/common/xtensa_modifyreg8.c index 79de9670996..dd9c0c1df91 100644 --- a/arch/xtensa/src/common/xtensa_modifyreg8.c +++ b/arch/xtensa/src/common/xtensa_modifyreg8.c @@ -35,6 +35,12 @@ #include "xtensa.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -52,10 +58,10 @@ void modifyreg8(unsigned int addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = spin_lock_irqsave(NULL); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = getreg8(addr); regval &= ~clearbits; regval |= setbits; putreg8(regval, addr); - spin_unlock_irqrestore(NULL, flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); } diff --git a/arch/z80/src/z180/z180_modifiyreg8.c b/arch/z80/src/z180/z180_modifiyreg8.c index 282e6592130..35a4ca63e78 100644 --- a/arch/z80/src/z180/z180_modifiyreg8.c +++ b/arch/z80/src/z180/z180_modifiyreg8.c @@ -29,6 +29,7 @@ #include #include +#include #include /**************************************************************************** @@ -39,6 +40,8 @@ * Private Data ****************************************************************************/ +static spinlock_t g_modifyreg_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -60,10 +63,10 @@ void modifyreg8(uint16_t addr, uint8_t clearbits, uint8_t setbits) irqstate_t flags; uint8_t regval; - flags = enter_critical_section(); + flags = spin_lock_irqsave(&g_modifyreg_lock); regval = inp(addr); regval &= ~clearbits; regval |= setbits; outp(regval, addr); - leave_critical_section(flags); + spin_unlock_irqrestore(&g_modifyreg_lock, flags); }