33 lines
601 B
ArmAsm
33 lines
601 B
ArmAsm
/*
|
|
** gint:dma:inth - Interrupt handler for the DMA
|
|
** An easy one, just clears some flags and marks all transfers as finished.
|
|
*/
|
|
|
|
.global _inth_dma_dma0
|
|
.section .gint.blocks, "ax"
|
|
.align 4
|
|
|
|
/* DMA TRANSFER ENDED INTERRUPT HANDLER - 28 BYTES */
|
|
|
|
_inth_dma_dma0:
|
|
/* Clear the TE flag and DMA Enable in CHCR */
|
|
mov.l 1f, r1
|
|
mov.l @r1, r0
|
|
mov #-4, r2
|
|
and r2, r0
|
|
mov.l r0, @r1
|
|
|
|
/* Clear the AE and NMIF flags in OR, and cut the master switch */
|
|
add #0x34, r1
|
|
mov.w @r1, r0
|
|
shlr8 r0
|
|
shll8 r0
|
|
mov.w r0, @r1
|
|
|
|
rte
|
|
nop
|
|
nop
|
|
nop
|
|
|
|
1: .long 0xfe00802c /* CHCR0 - OR is 0x34 bytes after this */
|