Ignore:
Timestamp:
Apr 14, 2014, 6:44:51 PM (10 years ago)
Author:
cfuguet
Message:

Bugfix for interrupt masking and demasking.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_kernel/giet.s

    r267 r301  
    5656_sys_handler:
    5757    addiu   $29,    $29,    -24     /* 2 slots for SR&EPC, 4 slots for args passing */
    58     mfc0    $26,    $12             /* load SR */
    59     sw      $26,    16($29)         /* save it in the stack */
    6058    mfc0    $27,    $14             /* load EPC */
    6159    addiu   $27,    $27,    4       /* increment EPC for return address */
     
    7371    mtc0    $26,    $12             /* interrupt enabled */
    7472    jalr    $3                      /* jump to the proper syscall */
    75     mtc0    $0,     $12             /* interrupt disbled */
    7673
    77     lw      $26,    16($29)         /* load SR from stack */
    78     mtc0    $26,    $12             /* restore SR */
     74    mfc0    $26,    $12             /* load SR */
     75    ori     $26,    $26,    0x2     /* set EXL bit */
     76    mtc0    $26,    $12
     77
    7978    lw      $26,    20($29)         /* load EPC from stack */
    8079    mtc0    $26,    $14             /* restore EPC */
    81     addiu   $29,    $29,     24     /* restore stack pointer */
     80    addiu   $29,    $29,    24      /* restore stack pointer */
    8281    eret                            /* exit GIET */
    8382
Note: See TracChangeset for help on using the changeset viewer.