summaryrefslogtreecommitdiff
path: root/firmware/target/arm/pp/pcm-pp.c
diff options
context:
space:
mode:
authorChris Chua <someone42@gmail.com>2023-03-19 06:22:08 +1100
committerAidan MacDonald <amachronic@protonmail.com>2023-03-23 13:28:22 -0400
commit86429dbf1eca8ee0e08176997f508647c3abf6bd (patch)
tree4d35e56e338a326d1a04c8d1f620821fa7909678 /firmware/target/arm/pp/pcm-pp.c
parenta64cad847e7d24dc4d01d5ab22f6c8dc42f960ae (diff)
downloadrockbox-86429dbf1eca8ee0e08176997f508647c3abf6bd.tar.gz
rockbox-86429dbf1eca8ee0e08176997f508647c3abf6bd.zip
Using ARM Unified Assembler Language
Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
Diffstat (limited to 'firmware/target/arm/pp/pcm-pp.c')
-rw-r--r--firmware/target/arm/pp/pcm-pp.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/firmware/target/arm/pp/pcm-pp.c b/firmware/target/arm/pp/pcm-pp.c
index 0d61eb44ff..fd798f0506 100644
--- a/firmware/target/arm/pp/pcm-pp.c
+++ b/firmware/target/arm/pp/pcm-pp.c
@@ -327,6 +327,7 @@ void fiq_playback(void)
327 */ 327 */
328 asm volatile ( 328 asm volatile (
329 /* No external calls */ 329 /* No external calls */
330 ".syntax unified \n"
330 "sub lr, lr, #4 \n" /* Prepare return address */ 331 "sub lr, lr, #4 \n" /* Prepare return address */
331 "stmfd sp!, { lr } \n" /* stack lr so we can use it */ 332 "stmfd sp!, { lr } \n" /* stack lr so we can use it */
332 "ldr r12, =0xcf001040 \n" /* Some magic from iPodLinux ... */ 333 "ldr r12, =0xcf001040 \n" /* Some magic from iPodLinux ... */
@@ -349,8 +350,8 @@ void fiq_playback(void)
349 "bhi 0b \n" /* ... yes, continue */ 350 "bhi 0b \n" /* ... yes, continue */
350 351
351 "cmp r9, #0 \n" /* either FIFO full or size empty? */ 352 "cmp r9, #0 \n" /* either FIFO full or size empty? */
352 "stmneia r11, { r8-r9 } \n" /* save p and size, if not empty */ 353 "stmiane r11, { r8-r9 } \n" /* save p and size, if not empty */
353 "ldmnefd sp!, { pc }^ \n" /* RFE if not empty */ 354 "ldmfdne sp!, { pc }^ \n" /* RFE if not empty */
354 355
355 /* Making external calls */ 356 /* Making external calls */
356 "1: \n" 357 "1: \n"
@@ -363,7 +364,7 @@ void fiq_playback(void)
363 "mov lr, pc \n" /* long call (not in same section) */ 364 "mov lr, pc \n" /* long call (not in same section) */
364 "bx r3 \n" 365 "bx r3 \n"
365 "cmp r0, #0 \n" /* more data? */ 366 "cmp r0, #0 \n" /* more data? */
366 "ldmeqfd sp!, { r0-r3, pc }^ \n" /* no? -> exit */ 367 "ldmfdeq sp!, { r0-r3, pc }^ \n" /* no? -> exit */
367 368
368 "ldr r14, [r10, #0x1c] \n" /* read IISFIFO_CFG to check FIFO status */ 369 "ldr r14, [r10, #0x1c] \n" /* read IISFIFO_CFG to check FIFO status */
369 "ands r14, r14, #(0xe<<23) \n" /* r14 = (IIS_TX_FREE_COUNT & ~1) << 23 */ 370 "ands r14, r14, #(0xe<<23) \n" /* r14 = (IIS_TX_FREE_COUNT & ~1) << 23 */