avr: added routine to count used buffers. fixed a bug.
This commit is contained in:
@@ -108,5 +108,32 @@ l_end:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @macro m_fixedbuf_count_used
|
||||||
|
;
|
||||||
|
; @return r16 number of buffers in use
|
||||||
|
; @param X pointer to start of buffers
|
||||||
|
; @param %0 constant maxBytes per buffer (including statusbyte in front)
|
||||||
|
; @param %1 constant maxBuffers
|
||||||
|
; @clobbers r16, r17, r18, X
|
||||||
|
|
||||||
|
.macro m_fixedbuf_count_used
|
||||||
|
clr r16
|
||||||
|
ldi r17, @1
|
||||||
|
l_loop:
|
||||||
|
ld r18, X
|
||||||
|
tst r18
|
||||||
|
breq l_notused
|
||||||
|
inc r16
|
||||||
|
l_notused:
|
||||||
|
adiw xh:xl, @0
|
||||||
|
dec r17
|
||||||
|
brne l_loop
|
||||||
|
l_end:
|
||||||
|
.endmacro
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ NET_Buffer_Locate:
|
|||||||
ror xl
|
ror xl
|
||||||
ldi r17, LOW(netBuffers)
|
ldi r17, LOW(netBuffers)
|
||||||
add xl, r17
|
add xl, r17
|
||||||
ldi r16, HIGH(netBuffers)
|
ldi r17, HIGH(netBuffers)
|
||||||
adc xh, r17
|
adc xh, r17
|
||||||
sec
|
sec
|
||||||
NET_Buffer_Locate_end:
|
NET_Buffer_Locate_end:
|
||||||
@@ -121,5 +121,20 @@ NET_Buffer_Locate_end:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------
|
||||||
|
; @routine NET_Buffer_CountUsed
|
||||||
|
;
|
||||||
|
; @return r16 number of buffers in use
|
||||||
|
; @param X pointer to start of buffers
|
||||||
|
; @param %0 constant maxBytes per buffer (including statusbyte in front)
|
||||||
|
; @param %1 constant maxBuffers
|
||||||
|
; @clobbers r16, r17, r18, X
|
||||||
|
|
||||||
|
NET_Buffer_CountUsed:
|
||||||
|
ldi xl, LOW(netBuffers)
|
||||||
|
ldi xh, HIGH(netBuffers)
|
||||||
|
m_fixedbuf_count_used NET_BUFFERS_SIZE, NET_BUFFERS_NUM
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user