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