improve wait macros
This commit is contained in:
parent
28cedeba55
commit
15a0bf120a
3 changed files with 10 additions and 8 deletions
12
debug.asm
12
debug.asm
|
@ -46,10 +46,10 @@ Drive64Write:
|
||||||
// set length (needs to be decremented due to DMA quirk)
|
// set length (needs to be decremented due to DMA quirk)
|
||||||
subiu t3, a3, 1
|
subiu t3, a3, 1
|
||||||
|
|
||||||
PI_WAIT()
|
PI_WAIT() // clobbers a0,t0
|
||||||
sw t1, PI_DRAM_ADDR(t5)
|
sw t1, PI_DRAM_ADDR(a0)
|
||||||
sw t2, PI_CART_ADDR(t5)
|
sw t2, PI_CART_ADDR(a0)
|
||||||
sw t3, PI_RD_LEN(t5) // "read" from DRAM to cart
|
sw t3, PI_RD_LEN(a0) // "read" from DRAM to cart
|
||||||
PI_WAIT()
|
PI_WAIT()
|
||||||
|
|
||||||
Drive64WriteDirect: // TODO: rewrite so this takes a0,a1 instead of a2,a3
|
Drive64WriteDirect: // TODO: rewrite so this takes a0,a1 instead of a2,a3
|
||||||
|
@ -66,7 +66,7 @@ Drive64WriteDirect: // TODO: rewrite so this takes a0,a1 instead of a2,a3
|
||||||
lui t9, K_BASE
|
lui t9, K_BASE
|
||||||
lw t9, K_CI_BASE(t9)
|
lw t9, K_CI_BASE(t9)
|
||||||
|
|
||||||
CI_USB_WRITE_WAIT(0x10000) // clobbers t0,v0, requires t9
|
CI_USB_WRITE_WAIT(0x10000) // clobbers a0,v0,t0, requires t9
|
||||||
bnez v0, Drive64WriteExit
|
bnez v0, Drive64WriteExit
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ Drive64WriteDirect: // TODO: rewrite so this takes a0,a1 instead of a2,a3
|
||||||
PI_WAIT()
|
PI_WAIT()
|
||||||
sw t1, CI_USB_COMMAND_STATUS(t9)
|
sw t1, CI_USB_COMMAND_STATUS(t9)
|
||||||
|
|
||||||
CI_USB_WRITE_WAIT(0x10000) // clobbers t0,v0, requires t9
|
CI_USB_WRITE_WAIT(0x10000) // clobbers a0,v0,t0, requires t9
|
||||||
|
|
||||||
Drive64WriteExit:
|
Drive64WriteExit:
|
||||||
jr ra
|
jr ra
|
||||||
|
|
|
@ -34,6 +34,7 @@ constant CI_EEPROM($1000) // 2048 bytes
|
||||||
constant CI_WRITEBACK_LBA($1800) // 1024 bytes (256 words)
|
constant CI_WRITEBACK_LBA($1800) // 1024 bytes (256 words)
|
||||||
|
|
||||||
macro CI_WAIT() {
|
macro CI_WAIT() {
|
||||||
|
// requires t9 to be set to either CI_BASE or CI_BASE_EXTENDED
|
||||||
PI_WAIT()
|
PI_WAIT()
|
||||||
-
|
-
|
||||||
lw t0, CI_STATUS(t9)
|
lw t0, CI_STATUS(t9)
|
||||||
|
@ -43,6 +44,7 @@ macro CI_WAIT() {
|
||||||
}
|
}
|
||||||
|
|
||||||
macro CI_USB_WRITE_WAIT(timeout) {
|
macro CI_USB_WRITE_WAIT(timeout) {
|
||||||
|
// requires t9 to be set to either CI_BASE or CI_BASE_EXTENDED
|
||||||
PI_WAIT()
|
PI_WAIT()
|
||||||
|
|
||||||
if {timeout} > 0 {
|
if {timeout} > 0 {
|
||||||
|
|
|
@ -14,9 +14,9 @@ constant PI_BSD_DOM2_PGS($2C) // $0460002C Domain 2 Page Size
|
||||||
constant PI_BSD_DOM2_RLS($30) // $04600030 Domain 2 Release
|
constant PI_BSD_DOM2_RLS($30) // $04600030 Domain 2 Release
|
||||||
|
|
||||||
macro PI_WAIT() {
|
macro PI_WAIT() {
|
||||||
lui t5, PI_BASE
|
lui a0, PI_BASE
|
||||||
-
|
-
|
||||||
lw t0, PI_STATUS(t5)
|
lw t0, PI_STATUS(a0)
|
||||||
andi t0, t0, 3
|
andi t0, t0, 3
|
||||||
bnez t0,-
|
bnez t0,-
|
||||||
nop
|
nop
|
||||||
|
|
Loading…
Add table
Reference in a new issue