From 08b53f71e1f5e38a6fd39ee48bf3d48d36673abb Mon Sep 17 00:00:00 2001 From: Wolfvak Date: Thu, 25 Apr 2019 10:01:34 -0300 Subject: [PATCH] Fix clobbered registers on MRC/MCR/MRS/MSR C wrappers Previously the compiler could've optimized stores/reads to be placed outside of critical sections, etc --- common/arm.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/arm.h b/common/arm.h index 0ed96a5..67a4fb0 100644 --- a/common/arm.h +++ b/common/arm.h @@ -75,19 +75,19 @@ #define ARM_MCR(cp, op1, reg, crn, crm, op2) asm_v( \ "MCR " #cp ", " #op1 ", %[R], " #crn ", " #crm ", " #op2 "\n\t" \ - :: [R] "r"(reg)) + :: [R] "r"(reg) : "memory","cc") #define ARM_MRC(cp, op1, reg, crn, crm, op2) asm_v( \ "MRC " #cp ", " #op1 ", %[R], " #crn ", " #crm ", " #op2 "\n\t" \ - : [R] "=r"(reg)) + : [R] "=r"(reg) :: "memory","cc") #define ARM_MSR(cp, reg) asm_v( \ "MSR " #cp ", %[R]\n\t" \ - :: [R] "r"(reg)) + :: [R] "r"(reg) : "memory","cc") #define ARM_MRS(reg, cp) asm_v( \ "MRS %[R], " #cp "\n\t" \ - : [R] "=r"(reg)) + : [R] "=r"(reg) :: "memory","cc") #ifdef ARM11 #define ARM_CPS(m) asm_v("CPS " #m)