Using ARM Unified Assembler Language

Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
This commit is contained in:
Chris Chua 2023-03-19 06:22:08 +11:00 committed by Aidan MacDonald
parent a64cad847e
commit 86429dbf1e
23 changed files with 139 additions and 127 deletions

View file

@ -53,12 +53,13 @@ enum state_enum
#define CMP_3_CONST(_a, _b) \
({ int _x; \
asm volatile ( \
".syntax unified \n" \
"ldrb %[x], [%[a], #0] \n" \
"eors %[x], %[x], %[b0] \n" \
"ldreqb %[x], [%[a], #1] \n" \
"eoreqs %[x], %[x], %[b1] \n" \
"ldreqb %[x], [%[a], #2] \n" \
"eoreqs %[x], %[x], %[b2] \n" \
"ldrbeq %[x], [%[a], #1] \n" \
"eorseq %[x], %[x], %[b1] \n" \
"ldrbeq %[x], [%[a], #2] \n" \
"eorseq %[x], %[x], %[b2] \n" \
: [x]"=&r"(_x) \
: [a]"r"(_a), \
[b0]"i"(((_b) >> 24) & 0xff), \
@ -70,14 +71,15 @@ enum state_enum
#define CMP_4_CONST(_a, _b) \
({ int _x; \
asm volatile ( \
".syntax unified \n" \
"ldrb %[x], [%[a], #0] \n" \
"eors %[x], %[x], %[b0] \n" \
"ldreqb %[x], [%[a], #1] \n" \
"eoreqs %[x], %[x], %[b1] \n" \
"ldreqb %[x], [%[a], #2] \n" \
"eoreqs %[x], %[x], %[b2] \n" \
"ldreqb %[x], [%[a], #3] \n" \
"eoreqs %[x], %[x], %[b3] \n" \
"ldrbeq %[x], [%[a], #1] \n" \
"eorseq %[x], %[x], %[b1] \n" \
"ldrbeq %[x], [%[a], #2] \n" \
"eorseq %[x], %[x], %[b2] \n" \
"ldrbeq %[x], [%[a], #3] \n" \
"eorseq %[x], %[x], %[b3] \n" \
: [x]"=&r"(_x) \
: [a]"r"(_a), \
[b0]"i"(((_b) >> 24) & 0xff), \