aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxetc
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2022-03-25 09:22:20 +0800
committerGitHub <noreply@github.com>2022-03-25 09:22:20 +0800
commit975e614b3c840e2f717adac1d1cb9cee4e5e561b (patch)
tree6584ce5b0dbe27a466c95c81fac61b0d90f627bd /libpsn00b/psxetc
parent05d44488bd5587786f4bd0286fc0f555c79aa46a (diff)
parent45168ae43e29aa5930ee5a206475ae836078915f (diff)
downloadpsn00bsdk-975e614b3c840e2f717adac1d1cb9cee4e5e561b.tar.gz
Merge pull request #46 from spicyjpeg/psxmdec
Critical ldscript fixes, initial MDEC support and CI updates
Diffstat (limited to 'libpsn00b/psxetc')
-rw-r--r--libpsn00b/psxetc/dl.c6
-rw-r--r--libpsn00b/psxetc/dmacallback.s16
-rw-r--r--libpsn00b/psxetc/interruptcallback.s8
-rw-r--r--libpsn00b/psxetc/isr.s8
-rw-r--r--libpsn00b/psxetc/restartcallback.s4
5 files changed, 22 insertions, 20 deletions
diff --git a/libpsn00b/psxetc/dl.c b/libpsn00b/psxetc/dl.c
index cbdcb66..6d37605 100644
--- a/libpsn00b/psxetc/dl.c
+++ b/libpsn00b/psxetc/dl.c
@@ -587,7 +587,8 @@ DLL *DL_CreateDLL(void *ptr, size_t size, DL_ResolveMode mode) {
if (ctor_list) {
for (uint32_t i = ((uint32_t) ctor_list[0]); i >= 1; i--) {
void (*ctor)(void) = (void (*)(void)) ctor_list[i];
- DL_CALL(ctor);
+ DL_PRE_CALL(ctor);
+ ctor();
}
}
@@ -619,7 +620,8 @@ void DL_DestroyDLL(DLL *dll) {
if (dtor_list) {
for (uint32_t i = 0; i < ((uint32_t) dtor_list[0]); i++) {
void (*dtor)(void) = (void (*)(void)) dtor_list[i + 1];
- DL_CALL(dtor);
+ DL_PRE_CALL(dtor);
+ dtor();
}
}
}
diff --git a/libpsn00b/psxetc/dmacallback.s b/libpsn00b/psxetc/dmacallback.s
index b2f86cf..8ea8ec0 100644
--- a/libpsn00b/psxetc/dmacallback.s
+++ b/libpsn00b/psxetc/dmacallback.s
@@ -46,13 +46,13 @@ DMACallback:
lui $a2, IOBASE
- lw $v0, DICR($a2) # Enable DMA interrupt
+ lw $v0, DMA_DICR($a2) # Enable DMA interrupt
lui $v1, 0x1
sll $v1, $a0
or $v0, $v1
lui $v1, 0x80
or $v0, $v1
- sw $v0, DICR($a2)
+ sw $v0, DMA_DICR($a2)
b .Lskip_remove
nop
@@ -67,7 +67,7 @@ DMACallback:
sw $v1, 4($sp)
lui $a2, IOBASE # Disable DMA interrupt
- lw $v0, DICR($a2)
+ lw $v0, DMA_DICR($a2)
lui $v1, 0x1
sll $v1, $a0
.set noat
@@ -78,13 +78,13 @@ DMACallback:
xor $v1, $at
and $v0, $v1
.set at
- sw $v0, DICR($a2)
+ sw $v0, DMA_DICR($a2)
jal _dma_has_cb # Check if callbacks are present
nop
bnez $v0, .Lskip_remove
nop
- sw $0 , DICR($a2)
+ sw $0 , DMA_DICR($a2)
jal GetInterruptCallback # Check if callback is the DMA handler
li $a0, 3
@@ -143,7 +143,7 @@ _dma_handler:
.Lhandler_loop:
lui $a0, IOBASE
- lw $v0, DICR($a0)
+ lw $v0, DMA_DICR($a0)
li $v1, 24
addu $v1, $s0
srl $v0, $v1
@@ -166,9 +166,9 @@ _dma_handler:
addi $s0, 1
lui $a0, IOBASE
- lw $v0, DICR($a0)
+ lw $v0, DMA_DICR($a0)
nop
- sw $v0, DICR($a0)
+ sw $v0, DMA_DICR($a0)
lw $ra, 0($sp)
lw $s0, 4($sp)
diff --git a/libpsn00b/psxetc/interruptcallback.s b/libpsn00b/psxetc/interruptcallback.s
index 8e912d8..78e5e6e 100644
--- a/libpsn00b/psxetc/interruptcallback.s
+++ b/libpsn00b/psxetc/interruptcallback.s
@@ -16,25 +16,25 @@ InterruptCallback:
beqz $a1, .Ldisable_irq
nop
- lw $v0, IMASK($a2) # Enable interrupt mask
+ lw $v0, IRQ_MASK($a2) # Enable interrupt mask
li $v1, 1
sll $v1, $a0
or $v0, $v1
b .Lcont
- sw $v0, IMASK($a2)
+ sw $v0, IRQ_MASK($a2)
.Ldisable_irq:
.set noat
- lw $v0, IMASK($a2) # Disable interrupt mask
+ lw $v0, IRQ_MASK($a2) # Disable interrupt mask
li $v1, 1
sll $v1, $a0
addiu $at, $0 , -1
xor $v1, $at
.set at
and $v0, $v1
- sw $v0, IMASK($a2)
+ sw $v0, IRQ_MASK($a2)
.Lcont:
diff --git a/libpsn00b/psxetc/isr.s b/libpsn00b/psxetc/isr.s
index 00428a4..440be50 100644
--- a/libpsn00b/psxetc/isr.s
+++ b/libpsn00b/psxetc/isr.s
@@ -20,7 +20,7 @@ _global_isr:
# changed elsewhere sometimes
lui $a0, IOBASE # Get IRQ status
- lw $v0, IMASK($a0)
+ lw $v0, IRQ_MASK($a0)
nop
srl $v0, $s1 # Check IRQ mask bit if set
@@ -29,7 +29,7 @@ _global_isr:
beqz $v0, .Lno_irq # Don't execute callback if IRQ not enabled
nop
- lw $v0, ISTAT($a0)
+ lw $v0, IRQ_STAT($a0)
nop
srl $v0, $s1 # Check IRQ status bit if set
andi $v0, 0x1
@@ -39,12 +39,12 @@ _global_isr:
lw $v1, 0($s0) # Load IRQ callback function
nop
- lw $v0, ISTAT($a0) # Acknowledge the IRQ (by writing a 0 bit)
+ lw $v0, IRQ_STAT($a0) # Acknowledge the IRQ (by writing a 0 bit)
li $a1, 1
sll $a1, $s1
addiu $a2, $0 , -1
xor $a1, $a2
- sw $a1, ISTAT($a0)
+ sw $a1, IRQ_STAT($a0)
beqz $v1, .Lno_irq # Don't execute if callback is not set
nop
diff --git a/libpsn00b/psxetc/restartcallback.s b/libpsn00b/psxetc/restartcallback.s
index 151d78e..036a5a0 100644
--- a/libpsn00b/psxetc/restartcallback.s
+++ b/libpsn00b/psxetc/restartcallback.s
@@ -44,8 +44,8 @@ RestartCallback:
addiu $a1, 1
lui $a0, IOBASE
- sw $0 , ISTAT($a0)
- sw $v0, IMASK($a0)
+ sw $0 , IRQ_STAT($a0)
+ sw $v0, IRQ_MASK($a0)
lw $ra, 0($sp)
addiu $sp, 4