Revision 1.0
Controlling the RSP from the CPU
143
Hidden OS Functions
There are undocumented OS functions to access the RSP from the CPU.
These functions should
not
be used in the regular course of game
programming; their use may interfere with other core OS functionality. They
can be useful for RSP program development, particularly post-mortem
analysis of RSP state.
These functions are internal OS calls and are not guaranteed to be supported
in the future; use at your own risk.
__osSpDeviceBusy
int
__osSpDeviceBusy(void)
This function returns
1
if the RSP is busy performing IO operations.
__osSpRawStartDma()
s32
__osSpRawStartDma(s32 direction, u32 devAddr,
void *dramAddr, u32 size)
Based on the input direction (
OS_READ
or
OS_WRITE
), set up a DMA
transfer between RDRAM and RSP memory address space.
devAddr
and
dramAddr
specifies the DMA buffer address of RSP
memory and RDRAM, respectively.
size
contains the number of bytes
to transfer. Note that these addresses must be 64-bit aligned and size
must be a multiple of 8 bytes. Maximum transfer size is 4K bytes.
If the interface is busy, return a
-1
and abort the operation.
__osSpRawReadIo()
s32
__osSpRawReadIo(u32 devAddr, u32 *data)
Perform a 32-bit programmed IO read from RSP memory address
space. Note that
devAddr
must be 32-bit aligned.
If the interface is busy, return a
-1
and abort the operation.
Summary of Contents for Ultra64
Page 2: ...2 ...
Page 10: ...10 ...
Page 12: ...12 Figure 6 2 buildtask Operation 137 ...
Page 14: ...14 ...
Page 80: ...80 Vector Unit Instructions vmadm dres_int dres_int vconst 3 vmadn dres_frac vconst vconst 0 ...
Page 104: ...104 RSP Coprocessor 0 ...
Page 150: ...150 Advanced Information ...
Page 155: ...Revision 1 0 155 ...
Page 248: ...248 Exceptions None ...
Page 251: ...Revision 1 0 251 Exceptions None ...
Page 254: ...254 Exceptions None ...
Page 257: ...Revision 1 0 257 Exceptions None ...
Page 293: ...Revision 1 0 293 Exceptions None ...
Page 316: ...316 Exceptions None ...