FreeRTOS help with the time to active semapho

Hello everybody I need to improve the time to activate a Semaphore from the ISR. I don’t known what solution to apply.  The time is about 70 microsecond, maybe because there is a change of task. Can i implement a different semaphore more fast?
Is there another alternative? Another question. If the interrupt can´t switch the context, can i delete this sentences  portENTER_SWITCHING_ISR(); ? Thank
Oliver Code: /**************************** INTERRUPT **********************/
_attribute__((__noinline__))
static portBASE_TYPE eic_int_handler_NonNakedBehaviour( void )
{
  portBASE_TYPE retstatus;
  portBASE_TYPE xTaskWoken = pdFALSE;        /* Because FreeRTOS is not supposed to run with nested interrupts, put all OS
            calls in a critical section . */
            portENTER_CRITICAL();
            retstatus=xSemaphoreGiveFromISR( xSemaphoreReceived, xTaskWoken );
            portEXIT_CRITICAL();
       /* The return value will be used by portEXIT_SWITCHING_ISR() to know if it
                        should perform a vTaskSwitchContext(). */                if (retstatus)
                xTaskWoken = pdTRUE;       eic_clear_interrupt_line(&AVR32_EIC, EXT_INT2);
      return (xTaskWoken);
} __attribute__((__naked__))
void eic_int_handler( void )
{
   /* This ISR can cause a context switch, so the first statement must be a
     call to the portENTER_SWITCHING_ISR() macro.  This must be BEFORE any
     variable declarations. */
     portENTER_SWITCHING_ISR();      eic_int_handler_NonNakedBehaviour();      /* Exit the ISR.  If a task was woken then a context switch will occur. */
     portEXIT_SWITCHING_ISR();
} /************* TASK ******************/
static portTASK_FUNCTION( vTxRxPCUTask, pvParameters )
{ ( void ) pvParameters;    //first thing to do Take the Semaphore
   xSemaphoreTake(xSemaphoreReceived,portMAX_DELAY);    while(1)
   {
     //wait for ISR free the semaphore
     xSemaphoreTake(xSemaphoreReceived,portMAX_DELAY);           //Rest of the code
          …….
         }
}

FreeRTOS help with the time to active semapho

I don’t recognize this code, but generally taskENTER_CRITICAL() and taskEXIT_CRITICAL() should not be called from an interrupt. You might consider implementing portSET_INTERRUPT_MASK_FROM_ISR() and portCLEAR_INTERRUPT_MASK_FROM_ISR() which are intended for this type of scenario. If they are not defined then they are just removed using #defines.

FreeRTOS help with the time to active semapho

I have an AVR32  in EVK1100. In all example always appear these sentences. If  i don´t change of  task in the interrupt, and i don´t call any function of S.O i have deleted this portENTER_CRITICAL(); and portEXIT_CRITICAL();. It´s work! but i don’t known if i can delete portENTER_SWITCHING_ISR(); and portEXIT_SWITCHING_ISR(); too. may i delete this sentences? By the other hand, i want to improve the time beetwen the semaphore from it is given to it is taken
Can i create a little code for to comunicate the interrupt with task as soon as posible. this is my problem i have wasted 70 microsecond. Thanks
Oliver Thanks
Oscar