瀏覽代碼

add native a_crash primitive for arm

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.
Rich Felker 9 年之前
父節點
當前提交
89e149d275
共有 1 個文件被更改,包括 10 次插入0 次删除
  1. 10 0
      arch/arm/atomic_arch.h

+ 10 - 0
arch/arm/atomic_arch.h

@@ -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");
+}