Skip to content

Commit

Permalink
- Move extra read to ISR.
Browse files Browse the repository at this point in the history
  • Loading branch information
Extrems committed Feb 25, 2021
1 parent e416ecf commit 6a7b12c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 16 deletions.
7 changes: 1 addition & 6 deletions cube/patches/ide-exi/ata.c
Original file line number Diff line number Diff line change
Expand Up @@ -386,18 +386,13 @@ static void ata_done_queued(void)
void tc_interrupt_handler(OSInterrupt interrupt, OSContext *context)
{
#if ISR_READ
if (isr_transferred < SECTOR_SIZE)
if (isr_transferred < SECTOR_SIZE + 4)
return;
#endif

OSMaskInterrupts(OS_INTERRUPTMASK(interrupt));
OSSetInterruptHandler(interrupt, TCIntrruptHandler);
exi_deselect();
#if !DMA_READ
exi_select();
exi_imm_read(4, 1);
exi_deselect();
#endif

ata_done_queued();
}
Expand Down
21 changes: 11 additions & 10 deletions cube/patches/ide-exi/ata_isr.S
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
isr_registers:
.long 0x0C006800
isr_transferred:
.long 512
.long 512 + 4

.globl external_interrupt_vector
external_interrupt_vector:
Expand All @@ -39,18 +39,19 @@ external_interrupt_vector:
eciwx r5, r0, r4
rlwinm r6, r5, 1, 28, 28
and. r6, r5, r6
beq 1f
lwz r6, isr_transferred - 0x80000000 (r0)
beq 2f
andi. r5, r5, ((1 << 0) << 7)
cmpwi cr1, r6, 512 - 4
beq cr0, 1f
bgt cr1, 1f
beq 2f
lwz r6, isr_transferred - 0x80000000 (r0)
cmpwi r6, 512
bgt 2f
beq 1f
li r5, 4*4
eciwx r5, r5, r4
stw r5, VAR_SECTOR_BUF (r6)
addi r6, r6, 4
1: addi r6, r6, 4
stw r6, isr_transferred - 0x80000000 (r0)
beq cr1, 1f
beq 2f
eciwx r5, r0, r4
andi. r6, r5, 0x405
ecowx r6, r0, r4
Expand All @@ -63,14 +64,14 @@ external_interrupt_vector:
li r5, 0x3000
eciwx r5, r5, r4
rlwinm. r6, r5, 0, 16, 14
bne 1f
bne 2f
mfsprg r6, 3
mtcr r6
mfsprg r6, 2
mfsprg r5, 1
mfsprg r4, 0
rfi
1: mfsprg r6, 3
2: mfsprg r6, 3
mtcr r6
mfsprg r6, 2
mfsprg r5, 1
Expand Down

0 comments on commit 6a7b12c

Please sign in to comment.