diff options
author | Zoltan Varga <vargaz@gmail.com> | 2014-04-01 18:39:05 +0000 |
---|---|---|
committer | Zoltan Varga <vargaz@gmail.com> | 2014-04-01 18:39:05 +0000 |
commit | 12741090edd2230bfd0fac498af3e304680380b4 (patch) | |
tree | a01393c4b6d4b76e253c7b25e15ff12c1f6a7a71 | |
parent | 21ca1bad7d0447bb5d420a58128e1c2733635efa (diff) | |
download | ffts-12741090edd2230bfd0fac498af3e304680380b4.zip ffts-12741090edd2230bfd0fac498af3e304680380b4.tar.gz |
[jit] Implement support for atomic intrinsics on arm.
-rw-r--r-- | arm/arm-codegen.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arm/arm-codegen.h b/arm/arm-codegen.h index 5a3dba0..d4d7f7c 100644 --- a/arm/arm-codegen.h +++ b/arm/arm-codegen.h @@ -1107,6 +1107,18 @@ typedef union { #define ARM_UDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x3 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0))) #define ARM_UDIV(p, rd, rn, rm) ARM_UDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL) +/* ARMv7 */ + +typedef enum { + ARM_DMB_SY = 0xf, +} ArmDmbFlags; + +#define ARM_DMB(p, option) ARM_EMIT ((p), ((0xf << 28) | (0x57 << 20) | (0xf << 16) | (0xf << 12) | (0x0 << 8) | (0x5 << 4) | ((option) << 0))) + +#define ARM_LDREX_REG(p, rt, rn) ARM_EMIT ((p), ((ARMCOND_AL << 28) | (0xc << 21) | (0x1 << 20) | ((rn) << 16) | ((rt) << 12)) | (0xf << 8) | (0x9 << 4) | 0xf << 0) + +#define ARM_STREX_REG(p, rd, rt, rn) ARM_EMIT ((p), ((ARMCOND_AL << 28) | (0xc << 21) | (0x0 << 20) | ((rn) << 16) | ((rd) << 12)) | (0xf << 8) | (0x9 << 4) | ((rt) << 0)) + #ifdef __cplusplus } #endif |