arm32: using ARMv6 memory fence
This commit is contained in:
parent
7a373de4cb
commit
85f3e9f5cb
|
@ -470,7 +470,11 @@ typedef char tputsputcchar;
|
|||
#define USE_DEV_URANDOM_UUID
|
||||
|
||||
#if defined(__arm64__) || defined(__arm32__)
|
||||
# if arm_isa_version == 6
|
||||
# define STORE_FENCE() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory")
|
||||
# else
|
||||
# define STORE_FENCE() __asm__ __volatile__ ("dmb ishst" : : : "memory")
|
||||
# endif
|
||||
#elif defined(__powerpc64__)
|
||||
# define STORE_FENCE() __asm__ __volatile__ ("lwsync" : : : "memory")
|
||||
#elif defined(__powerpc__) || defined(__POWERPC__)
|
||||
|
|
|
@ -12,3 +12,5 @@
|
|||
|
||||
(define-constant unaligned-floats #f)
|
||||
(define-constant unaligned-integers #t)
|
||||
|
||||
(define-constant arm-isa-version 6)
|
||||
|
|
|
@ -2009,11 +2009,15 @@
|
|||
(define-who asm-fence
|
||||
(lambda (kind)
|
||||
(lambda (code*)
|
||||
(constant-case arm-isa-version
|
||||
[(6)
|
||||
(emit mcr 'al #b1111 #b000 `(reg . ,%r0) #b0111 #b1010 #b101 code*)]
|
||||
[(7)
|
||||
(case kind
|
||||
[(store-store) (emit dmbishst code*)]
|
||||
[(acquire) (emit dmbish code*)]
|
||||
[(release) (emit dmbish code*)]
|
||||
[else (sorry! who "unexpected kind ~s" kind)]))))
|
||||
[else (sorry! who "unexpected kind ~s" kind)])]))))
|
||||
|
||||
(define asm-fp-relop
|
||||
(lambda (info)
|
||||
|
|
Loading…
Reference in New Issue
Block a user