add native a_crash primitive for arm
authorRich Felker <dalias@aerifal.cx>
Mon, 25 Jan 2016 02:40:55 +0000 (02:40 +0000)
committerRich Felker <dalias@aerifal.cx>
Mon, 25 Jan 2016 02:44:56 +0000 (02:44 +0000)
the .byte directive encodes a guaranteed-undefined instruction, the
same one Linux fills the kuser helper page with when it's disabled.
the udf mnemonic and and .insn directives are not supported by old
binutils versions, and larger-than-byte integer directives would
produce the wrong output on big-endian.

arch/arm/atomic_arch.h

index a52254b201d8b57fb0dc0babcbfcfac94553caf8..a74cf3b70c0940e26eb0ef200f5b881aa85d4c3f 100644 (file)
@@ -62,3 +62,13 @@ static inline void a_barrier()
                : : : "memory", "cc", "ip", "lr" );
 }
 #endif
+
+#define a_crash a_crash
+static inline void a_crash()
+{
+       __asm__ __volatile__(".byte 0xf1, 0xde"
+#ifndef __thumb__
+               ", 0xfd, 0xe7"
+#endif
+               : : : "memory");
+}