improve wait macros

This commit is contained in:
Connor Olding 2018-09-29 07:05:33 +02:00
parent 28cedeba55
commit 15a0bf120a
3 changed files with 10 additions and 8 deletions

View File

@ -46,10 +46,10 @@ Drive64Write:
// set length (needs to be decremented due to DMA quirk)
subiu t3, a3, 1
PI_WAIT()
sw t1, PI_DRAM_ADDR(t5)
sw t2, PI_CART_ADDR(t5)
sw t3, PI_RD_LEN(t5) // "read" from DRAM to cart
PI_WAIT() // clobbers a0,t0
sw t1, PI_DRAM_ADDR(a0)
sw t2, PI_CART_ADDR(a0)
sw t3, PI_RD_LEN(a0) // "read" from DRAM to cart
PI_WAIT()
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
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
nop
@ -76,7 +76,7 @@ Drive64WriteDirect: // TODO: rewrite so this takes a0,a1 instead of a2,a3
PI_WAIT()
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:
jr ra

View File

@ -34,6 +34,7 @@ constant CI_EEPROM($1000) // 2048 bytes
constant CI_WRITEBACK_LBA($1800) // 1024 bytes (256 words)
macro CI_WAIT() {
// requires t9 to be set to either CI_BASE or CI_BASE_EXTENDED
PI_WAIT()
-
lw t0, CI_STATUS(t9)
@ -43,6 +44,7 @@ macro CI_WAIT() {
}
macro CI_USB_WRITE_WAIT(timeout) {
// requires t9 to be set to either CI_BASE or CI_BASE_EXTENDED
PI_WAIT()
if {timeout} > 0 {

View File

@ -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
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
bnez t0,-
nop