Figure 4-2 Dma Read/Write Example - Nintendo Ultra64 Programmer's Manual

Rsp
Table of Contents

Advertisement

RSP Coprocessor 0
98
DMA Read/Write Example
Figure 4-2
###############################################
# Procedure to do DMA reads/writes.
# Registers:
#
$20
#
$19
#
$18
#
$17
#
$11
.name
mem_addr,
.name
dram_addr,
.name
dma_len,
.name
iswrite,
.name
tmp,
DMAproc: # request DMA access: (get semaphore)
DMAFull: # wait for not FULL:
# set DMA registers:
# handle writes:
DMAWrite:
DMADone:
.unname mem_addr
.unname dram_addr
.unname dma_len
.unname iswrite
.unname tmp
#
################################################
mem_addr
dram_addr
dma_len
iswrite?
used as tmp
$20
$19
$18
$17
$11
mfc0
tmp, SP_RESERVED
bne
tmp, zero, DMAproc
# note delay slot
mfc0
tmp, DMA_FULL
bne
tmp, zero, DMAFull
nop
mtc0
mem_addr, DMA_CACHE
bgtz
iswrite, DMAWrite
mtc0
dram_addr, DMA_DRAM
j
DMADone
mtc0
dma_len, DMA_READ_LENGTH
mtc0
dma_len, DMA_WRITE_LENGTH
jr
return
# clear semaphore, delay slot
mtc0
zero, SP_RESERVED

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents