Ignore:
Timestamp:
Jan 13, 2014, 3:21:42 PM (11 years ago)
Author:
cfuguet
Message:

Using the CP0 $4,2 register for the scheduler virtual address
instead of the CP0 $22 register

File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_common/utils.c

    r263 r268  
    103103{
    104104    unsigned int ret;
    105     asm volatile( "mfc0    %0,   $22    \n" : "=r"(ret) );
     105    asm volatile("mfc0      %0,     $4, 2\n" : "=r"(ret) );
    106106    return ret;
    107107}
     
    112112{
    113113    unsigned int ret;
    114     asm volatile( "mfc2    %0,        $0" : "=r"(ret));
     114    asm volatile("mfc2      %0,     $0" : "=r"(ret));
    115115    return ret;
    116116}
     
    121121{
    122122    unsigned int ret;
    123     asm volatile("mfc0    %0,        $14" : "=r"(ret));
     123    asm volatile("mfc0      %0,     $14" : "=r"(ret));
    124124    return ret;
    125125}
     
    130130{
    131131    unsigned int ret;
    132     asm volatile( "mfc0    %0,        $8" : "=r"(ret));
     132    asm volatile("mfc0      %0,     $8" : "=r"(ret));
    133133    return ret;
    134134}
     
    139139{
    140140    unsigned int ret;
    141     asm volatile("mfc0    %0,        $13" : "=r"(ret));
     141    asm volatile("mfc0      %0,     $13" : "=r"(ret));
    142142    return ret;
    143143}
     
    148148{
    149149    unsigned int ret;
    150     asm volatile( "mfc0    %0,        $12" : "=r"(ret));
     150    asm volatile("mfc0      %0,     $12" : "=r"(ret));
    151151    return ret;
    152152}
     
    156156inline void _set_sr(unsigned int val)
    157157{
    158     asm volatile( "mtc0    %0,        $12" ::"r" (val));
     158    asm volatile("mtc0      %0,     $12" ::"r" (val));
    159159}
    160160//////////////////////////////////////////////////////////////////////////////////
     
    164164{
    165165    unsigned int ret;
    166     asm volatile ("mfc0    %0,       $15, 1":"=r" (ret));
     166    asm volatile ("mfc0     %0,     $15, 1":"=r" (ret));
    167167    return (ret & 0x3FF);
    168168}
     
    174174{
    175175    unsigned int ret;
    176     asm volatile ("mfc0   %0,        $9":"=r" (ret));
     176    asm volatile ("mfc0     %0,     $9":"=r" (ret));
    177177    return ret;
    178178}
     
    216216inline void _set_mmu_ptpr(unsigned int val)
    217217{
    218     asm volatile ("mtc2  %0, $0"::"r" (val));
     218    asm volatile ("mtc2     %0,    $0"::"r" (val));
    219219}
    220220//////////////////////////////////////////////////////////////////////////////
     
    223223inline void _set_mmu_mode(unsigned int val)
    224224{
    225     asm volatile ("mtc2  %0, $1"::"r" (val));
     225    asm volatile ("mtc2     %0,    $1"::"r" (val));
    226226}
    227227//////////////////////////////////////////////////////////////////////////////
     
    231231inline void _set_sched(unsigned int val)
    232232{
    233     asm volatile ("mtc0  %0, $22"::"r" (val));
     233    asm volatile ("mtc0     %0,     $4, 2"::"r" (val));
    234234}
    235235
     
    300300{
    301301    register unsigned int delay = ( _get_proctime() ^ _get_procid() << 4) & 0xFF;
     302
     303    if (delay == 0) delay++;
    302304
    303305    asm volatile (
     
    312314            "_lock_loop:             \n"
    313315            "addi $4,    $4,    -1   \n" /* $4 <= $4 - 1 */
    314             "beqz $4,    _lock_loop  \n" /* test end delay */
     316            "bnez $4,    _lock_loop  \n" /* test end delay */
     317            "nop                     \n"
    315318            "j           _lock_llsc  \n" /* retry */
     319            "nop                     \n"
    316320            "_lock_ok:               \n"
    317321            :
Note: See TracChangeset for help on using the changeset viewer.