+12:
+ push r24
+/* now the "sending" part*/
+ ldi r24, lo8(uart0_ctx+UART0_CBB_RX_OFFSET)
+ ldi r25, hi8(uart0_ctx+UART0_CBB_RX_OFFSET)
+ rcall circularbytebuffer_cnt
+ ldi r30, lo8(uart0_ctx+UART0_RXON_OFFSET)
+ ldi r31, hi8(uart0_ctx+UART0_RXON_OFFSET)
+ ld r18, Z
+ tst r18
+ breq 15f/* branch if rxon inactive -> we had send an XOFF earlier */
+ /* ok, we did not have send an XOFF, should we? */
+ cpi r24, UART0_THRESH_HIGH
+ brlo 90f /* ok, nothing critical, go on */
+ st Z, r1
+ ldi r24, XOFF_VALUE
+; sbi _SFR_IO_ADDR(PORTD), 5
+ rjmp 16f
+15:
+ cpi r24, UART0_THRESH_LOW
+ brsh 90f /* nothing has changed */
+ /* if we get here, we had send an XOFF and are now below threshold */
+ /* so we sen an XON */
+ ldi r24, XON_VALUE
+ cbi _SFR_IO_ADDR(PORTD), 5
+ st Z, r24
+16:
+ ldi r22, lo8(uart0_ctx+UART0_CBB_TX_OFFSET)
+ ldi r23, hi8(uart0_ctx+UART0_CBB_TX_OFFSET)
+ rcall circularbytebuffer_push
+ SET_BIT_IO UCSR0B, UDRIE0, r24
+90:
+ pop r24