SWI and nested interrupts

I use LPC2138 and our application is quite time critical so we use interrupts. To enable nested interrupts we use these two macros: /* Nested Interrupts Entry                                                  */ #define NESTED_INTERRUPTS_ENABLE()                                             asm volatile (                                                                 "MRS LR, SPSR            nt"  /* Copy SPSR_irq to LR    */                 "STMFD SP!, {LR}         nt"  /* Save SPSR_irq          */                 "MSR CPSR_c, #0x1F       nt"  /* Enable IRQ (Sys Mode)  */                 "STMFD SP!, {LR}         nt"  /* Save LR                */               );                                                                         { /* Nested Interrupts Exit                                                   */ #define NESTED_INTERRUPTS_DISABLE()                                          }                                                                              asm volatile (                                                                 "LDMFD SP!, {LR}         nt"  /* Restore LR */                             "MSR CPSR_c, #0x92       nt"  /* Disable IRQ (IRQ Mode) */                 "LDMFD SP!, {LR}         nt"  /* Restore SPSR_irq to LR */                 "MSR SPSR_cxsf, LR       nt"  /* Copy LR to SPSR_irq */                  ); While we use IRQ it works fine. But the operating system uses SWI to perform context switch and I don’t know how to enable nested interrupts inside SWI ISR. How can I do it to get really fast response on interrupts? I need to enter interrupt service routine within 10us. Thanks

SWI and nested interrupts

Change the portENTER_CRITICAL and portEXIT_CRITICAL macros to only disable IRQ, not FIQ, then set your high priroity interrupt to use FIQ.  There was something in another thread on this today.