summaryrefslogtreecommitdiff
path: root/firmware/asm/arm/corelock.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/asm/arm/corelock.c
parenta64cad847e7d24dc4d01d5ab22f6c8dc42f960ae (diff)
downloadrockbox-86429dbf1eca8ee0e08176997f508647c3abf6bd.tar.gz
rockbox-86429dbf1eca8ee0e08176997f508647c3abf6bd.zip
Using ARM Unified Assembler Language
Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
Diffstat (limited to 'firmware/asm/arm/corelock.c')
-rw-r--r--firmware/asm/arm/corelock.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/firmware/asm/arm/corelock.c b/firmware/asm/arm/corelock.c
index b36a40b45b..07ec77a60e 100644
--- a/firmware/asm/arm/corelock.c
+++ b/firmware/asm/arm/corelock.c
@@ -61,6 +61,7 @@ int corelock_try_lock(struct corelock *cl)
61 61
62 /* Relies on the fact that core IDs are complementary bitmasks (0x55,0xaa) */ 62 /* Relies on the fact that core IDs are complementary bitmasks (0x55,0xaa) */
63 asm volatile ( 63 asm volatile (
64 ".syntax unified \n"
64 "mov r1, %[id] \n" /* r1 = PROCESSOR_ID */ 65 "mov r1, %[id] \n" /* r1 = PROCESSOR_ID */
65 "ldrb r1, [r1] \n" 66 "ldrb r1, [r1] \n"
66 "strb r1, [%[cl], r1, lsr #7] \n" /* cl->myl[core] = core */ 67 "strb r1, [%[cl], r1, lsr #7] \n" /* cl->myl[core] = core */
@@ -71,7 +72,7 @@ int corelock_try_lock(struct corelock *cl)
71 "bne 1f \n" /* yes? lock acquired */ 72 "bne 1f \n" /* yes? lock acquired */
72 "ldrb %[rv], [%[cl], #2] \n" /* || cl->turn == core? */ 73 "ldrb %[rv], [%[cl], #2] \n" /* || cl->turn == core? */
73 "ands %[rv], %[rv], r1 \n" 74 "ands %[rv], %[rv], r1 \n"
74 "streqb %[rv], [%[cl], r1, lsr #7] \n" /* if not, cl->myl[core] = 0 */ 75 "strbeq %[rv], [%[cl], r1, lsr #7] \n" /* if not, cl->myl[core] = 0 */
75 "1: \n" /* Done */ 76 "1: \n" /* Done */
76 : [rv] "=r"(rval) 77 : [rv] "=r"(rval)
77 : [id] "i" (&PROCESSOR_ID), [cl] "r" (cl) 78 : [id] "i" (&PROCESSOR_ID), [cl] "r" (cl)