startIntrDMA: addiu sp,sp,-24 lui a0,_hi(data_4) addiu a0,a0,_lo(data_4) sw ra,16(sp) jal memclr li a1,8 li a0,3 lui v0,_hi(sectbase(.data)) lw v0,_lo(sectbase(.data))(v0) lui a1,_hi(trapIntrDMA) addiu a1,a1,_lo(trapIntrDMA) jal InterruptCallback sw zero,0(v0) lui v0,_hi(setIntrDMA) addiu v0,v0,_lo(setIntrDMA) lw ra,16(sp) addiu sp,sp,24 jr ra nop |
static u_long *dicr = (void *)0x1f8010f4; static void (*cbIntrDMA[8])(); void *startIntrDMA() { memclr(cbIntrDMA, 8); *dicr = 0; InterruptCallback(3, trapIntrDMA); return setIntrDMA; } |
startIntrDMA: subu $sp,$sp,24 la $4,cbIntrDMA sw $31,16($sp) jal memclr li $5,0x00000008 li $4,0x00000003 lw $2,dicr la $5,trapIntrDMA jal InterruptCallback sw $0,0($2) la $2,setIntrDMA lw $31,16($sp) addu $sp,$sp,24 j $31 nop |