static void xllfifo_intr_handler(struct xemac_s *xemac) { xaxiemacif_s *xaxiemacif = (xaxiemacif_s *)(xemac->state); XLlFifo *llfifo = &xaxiemacif->axififo; u32_t pending_fifo_intr = XLlFifo_IntPending(llfifo); #ifdef OS_IS_FREERTOS xInsideISR++; #endif while (pending_fifo_intr) { if (pending_fifo_intr & XLLF_INT_RC_MASK) { /* receive interrupt */ XLlFifo_IntClear(llfifo, XLLF_INT_RC_MASK); xllfifo_recv_handler(xemac); } else if (pending_fifo_intr & XLLF_INT_TC_MASK) { /* tx intr */ XLlFifo_IntClear(llfifo, XLLF_INT_TC_MASK); } else { XLlFifo_IntClear(llfifo, XLLF_INT_ALL_MASK & ~(XLLF_INT_RC_MASK | XLLF_INT_TC_MASK)); fifo_error_handler(xaxiemacif, pending_fifo_intr); } pending_fifo_intr = XLlFifo_IntPending(llfifo); } #ifdef OS_IS_FREERTOS xInsideISR--; #endif }
static void xllfifo_intr_handler(struct xemac_s *xemac) { xlltemacif_s *xlltemacif = (xlltemacif_s *)(xemac->state); XLlFifo *llfifo = &xlltemacif->llfifo; u32_t pending_fifo_intr = XLlFifo_IntPending(llfifo); while (pending_fifo_intr) { if (pending_fifo_intr & XLLF_INT_RC_MASK) { /* receive interrupt */ XLlFifo_IntClear(llfifo, XLLF_INT_RC_MASK); xllfifo_recv_handler(xlltemacif); } else if (pending_fifo_intr & XLLF_INT_TC_MASK) { /* tx intr */ XLlFifo_IntClear(llfifo, XLLF_INT_TC_MASK); } else { XLlFifo_IntClear(llfifo, XLLF_INT_ALL_MASK & ~(XLLF_INT_RC_MASK | XLLF_INT_TC_MASK)); fifo_error_handler(xlltemacif, pending_fifo_intr); } pending_fifo_intr = XLlFifo_IntPending(llfifo); } }