PIC18: service multiple interrupts

Hi, Since the PIC18 is pretty low-end, I like to make the code as efficient as possible. The situation is as follows: I usually use interrupts for i2c or serial communication, so typically I call xQueueReceiveFromISR and xQueueSendFromISR, which take relatively long to execute. It is therefore quite likely that during handling of 1 interrupt, another interrupt fires. In the PIC18 port, only 1 interrupt flag will be serviced every entry into the interrupt handler, each calling portSAVE_CONTEXT and portRESTORE_CONFIG. I counted the number of instructions for a portSAVE_CONTEXT, which is about 100. A portRESTORE_CONFIG takes the same amount of cycles. This is a lot of overhead. I would like to move the calls to portSAVE_CONTEXT and portRESTORE_CONFIG from the interrupt functions to the interrupt handler prvLowInterrupt in port.c, so that portSAVE_CONTEXT is called once, all interrupts are served, forcing taskswitches etc. until the global interrupt flag drops (no interrupts to be served any more), (maybe even only 1 final ‘yield’?)  and then portRESTORE_CONFIG is called My question is: Is there a fundamental problem with this? For example: is it possible to have the wrong task activated after this? Thanks Paul