From 46b24bf442d4c8213ba1d29d4acc328e6cc02d53 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sun, 4 May 2025 03:34:11 +0200 Subject: [PATCH] avr/modules/network: disable interrupts on alloc/release. --- avr/modules/network/buffer.asm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/avr/modules/network/buffer.asm b/avr/modules/network/buffer.asm index 41faff0..e3d48cf 100644 --- a/avr/modules/network/buffer.asm +++ b/avr/modules/network/buffer.asm @@ -42,6 +42,22 @@ NET_Buffer_Init: ; @clobbers R16, R17, X NET_Buffer_Alloc: + push r15 + in r15, SREG + cli + rcall NET_Buffer_Alloc_noIrq + brcc NET_Buffer_Alloc_error + out SREG, r15 + pop r15 + sec + ret +NET_Buffer_Alloc_error: + out SREG, r15 + pop r15 + clc + ret + +NET_Buffer_Alloc_noIrq: ldi xl, LOW(netBuffers) ldi xh, HIGH(netBuffers) m_fixedbuf_reserve NET_BUFFERS_SIZE, NET_BUFFERS_NUM @@ -61,7 +77,12 @@ NET_Buffer_Alloc_end: ; @clobbers R16 NET_Buffer_ReleaseByAddr: - m_fixedbuf_release + push r15 + in r15, SREG + cli + m_fixedbuf_release + out SREG, r15 + pop r15 ret ; @end