.set noreorder .include "hwregs_a.h" .section .text .global CdGetSector .type CdGetSector, @function CdGetSector: lui $a2, IOBASE .Lwait_fifo: lbu $v0, CD_REG0($a2) nop andi $v0, 0x40 beqz $v0, .Lwait_fifo nop lui $v0, 0x1 srl $a1, 2 or $v0, $a1 sw $a0, D3_MADR($a2) # Set DMA base address and transfer length sw $v0, D3_BCR($a2) lui $v0, 0x1100 # Start DMA transfer sw $v0, D3_CHCR($a2) nop nop .Ldma_wait: lw $v0, D3_CHCR($a2) nop srl $v0, 24 andi $v0, 0x1 bnez $v0, .Ldma_wait nop # Not stable # sb $0 , CD_REG0($a2) #.Lflush_fifo: # Read out any remaining bytes in the buffer # lbu $v1, CD_REG0($a2) # li $v0, 0x40 # and $v1, $v0 # beqz $v1, .Lend_flush # nop # lbu $v0, CD_REG2($a2) # b .Lflush_fifo # nop #.Lend_flush: jr $ra li $v0, 1