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

Bugfix for interrupt masking and demasking.

Location:
soft/giet_vm/giet_kernel
Files:
3 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
  • soft/giet_vm/giet_kernel/switch.s

    r263 r301  
    22* This function receives two arguments that are the current task context
    33* (virtual) addresses and the next task context (virtual) address.
     4*
     5* This function should be called in a critical section
    46*
    57* TODO (AG) Il semble possible de limiter le nombre de registres à sauver:
     
    1820
    1921_task_switch:
    20 
    21     /* enter critical section */
    22     li      $2,     0xFFFFFFFE 
    23     mfc0    $3,     $12       
    24     and     $3,     $3, $2   
    25     mtc0    $3,     $12   
    2622
    2723    /* save _current task context */
     
    123119    mtc2    $26,    $0          /* restore PTPR */
    124120
    125     /* exit critical section */
    126     li      $2,     0x00000001 
    127     mfc0    $3,     $12       
    128     or      $3,     $3, $2   
    129     mtc0    $3,     $12   
    130 
    131121    /* returns to caller */
    132122    jr      $31
  • soft/giet_vm/giet_kernel/sys_handler.c

    r294 r301  
    5555    &_sys_ukn,             /* 0x17 */
    5656    &_sys_ukn,             /* 0x18 */   
    57     &_ctx_switch,          /* 0x19 */
     57    &_context_switch,      /* 0x19 */
    5858    &_vobj_get_vbase,      /* 0x1A */
    5959    &_sys_ukn,             /* 0x1B */
Note: See TracChangeset for help on using the changeset viewer.