Merge pull request #1451 from kasjer/kasjer/pic32-sanity-fixes

pic32 sanity fixes
This commit is contained in:
Ha Thach 2022-05-24 20:42:06 +07:00 committed by GitHub
commit 0a4a28a90c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -90,6 +90,9 @@
#elif defined(__riscv) #elif defined(__riscv)
#define TU_BREAKPOINT() do { __asm("ebreak\n"); } while(0) #define TU_BREAKPOINT() do { __asm("ebreak\n"); } while(0)
#elif defined(_mips)
#define TU_BREAKPOINT() do { __asm("sdbbp 0"); } while (0)
#else #else
#define TU_BREAKPOINT() do {} while (0) #define TU_BREAKPOINT() do {} while (0)
#endif #endif

View File

@ -530,6 +530,7 @@ static void ep0_handle_rx(void)
transferred = rx_fifo_read(0, xfer->buffer + xfer->transferred); transferred = rx_fifo_read(0, xfer->buffer + xfer->transferred);
xfer->transferred += transferred; xfer->transferred += transferred;
TU_ASSERT(xfer->transferred <= xfer->total_len,);
if (transferred < xfer->max_packet_size || xfer->transferred == xfer->total_len) if (transferred < xfer->max_packet_size || xfer->transferred == xfer->total_len)
{ {
ep0_set_stage(EP0_STAGE_DATA_OUT_COMPLETE); ep0_set_stage(EP0_STAGE_DATA_OUT_COMPLETE);
@ -560,8 +561,10 @@ static void epn_handle_rx_int(uint8_t epnum)
transferred = rx_fifo_read(epnum, xfer->buffer + xfer->transferred); transferred = rx_fifo_read(epnum, xfer->buffer + xfer->transferred);
USB_REGS->EPCSR[epnum].RXCSRL_HOSTbits.RXPKTRDY = 0; USB_REGS->EPCSR[epnum].RXCSRL_HOSTbits.RXPKTRDY = 0;
xfer->transferred += transferred; xfer->transferred += transferred;
TU_ASSERT(xfer->transferred <= xfer->total_len,);
if (transferred < xfer->max_packet_size || xfer->transferred == xfer->total_len) if (transferred < xfer->max_packet_size || xfer->transferred == xfer->total_len)
{ {
USB_REGS->INTRRXEbits.w &= ~(1u << epnum);
xfer_complete(xfer, XFER_RESULT_SUCCESS, true); xfer_complete(xfer, XFER_RESULT_SUCCESS, true);
} }
} }
@ -579,6 +582,7 @@ static void epn_handle_tx_int(uint8_t epnum)
else else
{ {
xfer->transferred += xfer->last_packet_size; xfer->transferred += xfer->last_packet_size;
TU_ASSERT(xfer->transferred <= xfer->total_len,);
if (xfer->last_packet_size < xfer->max_packet_size || xfer->transferred == xfer->total_len) if (xfer->last_packet_size < xfer->max_packet_size || xfer->transferred == xfer->total_len)
{ {
xfer->last_packet_size = 0; xfer->last_packet_size = 0;
@ -689,7 +693,7 @@ void dcd_int_handler(uint8_t rhport)
int i; int i;
uint8_t mask; uint8_t mask;
__USBCSR2bits_t csr2_bits; __USBCSR2bits_t csr2_bits;
uint16_t rxints = USB_REGS->INTRRX; uint16_t rxints = USB_REGS->INTRRX & USB_REGS->INTRRXEbits.w;
uint16_t txints = USB_REGS->INTRTX; uint16_t txints = USB_REGS->INTRTX;
csr2_bits = USBCSR2bits; csr2_bits = USBCSR2bits;
(void) rhport; (void) rhport;