unsigned long temp; \
(void) (&temp == &flags); \
__asm__ __volatile__( \
- "mrs %0, psr @ save_and_cli\n" \
+ "mrs %0, primask @ save_and_cli\n" \
" cpsid i\n" \
: "=r" (flags) \
: \
unsigned long temp; \
(void) (&temp == &flags); \
__asm__ __volatile__( \
- "mrs %0, psr @ save_and_cli\n" \
+ "mrs %0, primask @ save_flags\n" \
: "=r" (flags) \
: \
: "memory", "cc"); \
#define restore_flags(flags) \
({ \
__asm__ __volatile__( \
- "msr ipsr, %0 @ restore_flags\n" \
+ "msr primask, %0 @ restore_flags\n" \
: \
: "r" (flags) \
: "memory", "cc"); \
return r&m?1:0;
}
+#if defined(__thumb2__) || defined (__ARM_ARCH_6M__)
+
+/* DMB, DSB, ISB */
+
+#define __memory_barrier() \
+ __asm__ __volatile__("dmb": : : "memory")
+
+#else /* old plain ARM architecture */
+
#define __memory_barrier() \
__asm__ __volatile__("": : : "memory")
+#endif
+
/*masked fields macros*/
#define __val2mfld(mask,val) (((mask)&~((mask)<<1))*(val)&(mask))
}
#endif /* _ARM_CPU_DEF_H */
-
-
-
-
-
-
-
-
-
-
-
-