Changeset 375

Show
Ignore:
Timestamp:
09/26/08 21:16:38 (2 months ago)
Author:
rjerant
Message:

Change interrupt handler to run with interrupts enabled

Location:
GPL/branches/uniaud32-2.0/drv32
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • GPL/branches/uniaud32-2.0/drv32/irq.cpp

    r362 r375  
    9393    ULONG       ulIrqNo; 
    9494 
    95     if( process_interrupt(ulSlotNo, &ulIrqNo) ) { 
    96         cli(); 
    97         // We've cleared all service requests.  Send EOI and clear 
    98         // the carry flag (tells OS/2 kernel that Int was handled). 
    99         DevEOI( (WORD16)ulIrqNo ); 
    100         return TRUE; 
     95   // enable interrupts that have higher priority we should  
     96   // allow higher priority interrupts 
     97   sti();  
     98   if( process_interrupt(ulSlotNo, &ulIrqNo) ) { 
     99       // We've cleared all service requests.   
     100       // Clear (disable) Interrupts, Send EOI  
     101       // and clear the carry flag (tells OS/2 kernel that Int was handled). 
     102       // Note carry flag is handled in setup.asm  
     103       cli(); 
     104       DevEOI( (WORD16)ulIrqNo ); 
     105       return TRUE; 
    101106   } 
    102107   // Indicate Interrupt not serviced by setting carry flag before 
  • GPL/branches/uniaud32-2.0/drv32/startup.asm

    r63 r375  
    13161316 
    13171317        pushfd 
    1318         cli 
     1318        ; At this point a cli is redundant 
     1319        ; we enter the interrupt handler with interrupts disabled. 
     1320        ;cli 
    13191321 
    13201322IFDEF FLATSTACK