void *startIntrVSync();


disassembled listing :
startIntrVSync:
    addiu   sp,sp,-24
    lui     a0,_hi(sectbase(.data))
    addiu   a0,a0,_lo(sectbase(.data))
    lui     v1,_hi(data_24)
    lw      v1,_lo(data_24)(v1)
    li      v0,256
    sw      ra,16(sp)
    sw      v0,0(v1)
    lui     at,_hi(Vcount)
    sw      zero,_lo(Vcount)(at)
    jal     memclr
    li      a1,8
    lui     a1,_hi(text_58)
    addiu   a1,a1,_lo(trapIntrVSync)
    jal     InterruptCallback
    move    a0,zero
    lui     v0,_hi(text_C4)
    addiu   v0,v0,_lo(setIntrVSync)
    lw      ra,16(sp)
    addiu   sp,sp,24
    jr      ra
    nop
source code :
static void (*cbIntrVSync[8])();

int Vcount;

static volatile u_long *t1_mode = (void *)0x1f801114;

void *startIntrVSync()
{
    *t1_mode = 0x0100;
    Vcount = 0;
    memclr(cbIntrVSync, 8);
    InterruptCallback(0, trapIntrVSync);
    return setIntrVSync;
}
reversed listing :
startIntrVSync:
    subu    $sp,$sp,24
    la      $4,cbIntrVSync
    lw      $3,t1_mode
    li      $2,0x00000100
    sw      $31,16($sp)
    sw      $2,0($3)
    sw      $0,Vcount
    jal     memclr
    li      $5,0x00000008
    la      $5,trapIntrVSync
    jal     InterruptCallback
    move    $4,$0
    la      $2,setIntrVSync
    lw      $31,16($sp)
    addu    $sp,$sp,24
    j       $31
    nop
coincidence: 100%

STATUS: COMPLETE
15 Apr 2003
Hosted by uCoz