diff --git a/osal/usb_osal_freertos.c b/osal/usb_osal_freertos.c index 4c4e929d..8af74065 100644 --- a/osal/usb_osal_freertos.c +++ b/osal/usb_osal_freertos.c @@ -63,22 +63,11 @@ int usb_osal_sem_take(usb_osal_sem_t sem, uint32_t timeout) int usb_osal_sem_give(usb_osal_sem_t sem) { BaseType_t xHigherPriorityTaskWoken = pdFALSE; - uint32_t intstatus = 0; int ret; -#ifdef __riscv - /* Obtain the level of the currently executing interrupt. */ - __asm volatile("csrr %0, mintstatus" : "=r"(intstatus)::"memory"); -#else - /* Obtain the number of the currently executing interrupt. */ - __asm volatile ( "mrs %0, ipsr" : "=r" ( intstatus )::"memory" ); -#endif - if (intstatus == 0) { - ret = xSemaphoreGive((SemaphoreHandle_t)sem); - } else { - ret = xSemaphoreGiveFromISR((SemaphoreHandle_t)sem, &xHigherPriorityTaskWoken); - if (ret == pdPASS) { - portYIELD_FROM_ISR(xHigherPriorityTaskWoken); - } + + ret = xSemaphoreGiveFromISR((SemaphoreHandle_t)sem, &xHigherPriorityTaskWoken); + if (ret == pdPASS) { + portYIELD_FROM_ISR(xHigherPriorityTaskWoken); } return (ret == pdPASS) ? 0 : -EINVAL;