Skip to content

Commit 02a94b5

Browse files
committed
[xaudio] align DMA buffer to page size (4k)
1 parent 834a8f1 commit 02a94b5

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

xaudio/src/replay_audio.s

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ XAUD_CTRLH = $001c
126126
XAUD_CTRLL = $001e
127127
MEMF_REPLAY = (1<<14)
128128

129+
DMA_ALIGN = (1<<12) ; 4k page size
130+
129131
*************************************************************************
130132

131133
TRUE EQU 1
@@ -1900,26 +1902,26 @@ AHIsub_Start:
19001902
; move.l ahiac_MaxBuffSamples(a2),d0
19011903
; add.l d0,d0 ; buffer 2x sample speed
19021904
lsl.l #2,d0 ; multiply by 4 because output is always 16 bit stereo
1903-
addi.l #15,d0 ; need 16byte alignment size
1904-
andi.l #~15,d0
1905+
addi.l #DMA_ALIGN-1,d0 ; need aligned size
1906+
andi.l #~(DMA_ALIGN-1),d0
19051907
move.l d0,r_OutputBufferSize(a3)
1906-
addi.l #15,d0 ; need 16byte alignment ptr
1908+
addi.l #DMA_ALIGN-1,d0 ; need aligned ptr
19071909
move.l #MEMF_PUBLIC|MEMF_CLEAR|MEMF_REPLAY,d1
19081910
CALLLIB _LVOAllocVec
19091911
move.l d0,r_OutputBuffer(a3)
19101912
bne.b .memory_ok
19111913

19121914
kprintf "WARNING : unable to allocate REPLAY memory"
19131915
move.l r_OutputBufferSize(a3),d0
1914-
addi.l #15,d0 ; need 16byte alignment ptr
1916+
addi.l #DMA_ALIGN-1,d0 ; need aligned ptr
19151917
move.l #MEMF_PUBLIC|MEMF_CLEAR|MEMF_24BITDMA,d1
19161918
CALLLIB _LVOAllocVec
19171919
move.l d0,r_OutputBuffer(a3)
19181920
beq .error_nomem
19191921

19201922
.memory_ok:
1921-
addi.l #15,d0
1922-
andi.l #~15,d0
1923+
addi.l #DMA_ALIGN-1,d0
1924+
andi.l #~(DMA_ALIGN-1),d0
19231925
move.l d0,r_OutputBufferAligned(a3)
19241926

19251927

0 commit comments

Comments
 (0)