Skip to content

Commit 0a4a28a

Browse files
authored
Merge pull request #1451 from kasjer/kasjer/pic32-sanity-fixes
pic32 sanity fixes
2 parents c2bcda8 + e49cad8 commit 0a4a28a

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

src/common/tusb_verify.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@
9090
#elif defined(__riscv)
9191
#define TU_BREAKPOINT() do { __asm("ebreak\n"); } while(0)
9292

93+
#elif defined(_mips)
94+
#define TU_BREAKPOINT() do { __asm("sdbbp 0"); } while (0)
95+
9396
#else
9497
#define TU_BREAKPOINT() do {} while (0)
9598
#endif

src/portable/microchip/pic32mz/dcd_pic32mz.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,7 @@ static void ep0_handle_rx(void)
530530

531531
transferred = rx_fifo_read(0, xfer->buffer + xfer->transferred);
532532
xfer->transferred += transferred;
533+
TU_ASSERT(xfer->transferred <= xfer->total_len,);
533534
if (transferred < xfer->max_packet_size || xfer->transferred == xfer->total_len)
534535
{
535536
ep0_set_stage(EP0_STAGE_DATA_OUT_COMPLETE);
@@ -560,8 +561,10 @@ static void epn_handle_rx_int(uint8_t epnum)
560561
transferred = rx_fifo_read(epnum, xfer->buffer + xfer->transferred);
561562
USB_REGS->EPCSR[epnum].RXCSRL_HOSTbits.RXPKTRDY = 0;
562563
xfer->transferred += transferred;
564+
TU_ASSERT(xfer->transferred <= xfer->total_len,);
563565
if (transferred < xfer->max_packet_size || xfer->transferred == xfer->total_len)
564566
{
567+
USB_REGS->INTRRXEbits.w &= ~(1u << epnum);
565568
xfer_complete(xfer, XFER_RESULT_SUCCESS, true);
566569
}
567570
}
@@ -579,6 +582,7 @@ static void epn_handle_tx_int(uint8_t epnum)
579582
else
580583
{
581584
xfer->transferred += xfer->last_packet_size;
585+
TU_ASSERT(xfer->transferred <= xfer->total_len,);
582586
if (xfer->last_packet_size < xfer->max_packet_size || xfer->transferred == xfer->total_len)
583587
{
584588
xfer->last_packet_size = 0;
@@ -689,7 +693,7 @@ void dcd_int_handler(uint8_t rhport)
689693
int i;
690694
uint8_t mask;
691695
__USBCSR2bits_t csr2_bits;
692-
uint16_t rxints = USB_REGS->INTRRX;
696+
uint16_t rxints = USB_REGS->INTRRX & USB_REGS->INTRRXEbits.w;
693697
uint16_t txints = USB_REGS->INTRTX;
694698
csr2_bits = USBCSR2bits;
695699
(void) rhport;

0 commit comments

Comments
 (0)