fix arm a_crash for big endian
authorRich Felker <dalias@aerifal.cx>
Mon, 25 Jan 2016 21:59:55 +0000 (21:59 +0000)
committerRich Felker <dalias@aerifal.cx>
Mon, 25 Jan 2016 21:59:55 +0000 (21:59 +0000)
contrary to commit 89e149d275a7699a4a5e4c98bab267648f64cbba, big
endian arm does need the instruction bytes in big endian order. rather
than trying to use a special encoding that works as arm or thumb,
simply encode the simplest/canonical undefined instructions dependent
on whether __thumb__ is defined.

arch/arm/atomic_arch.h

index a74cf3b70c0940e26eb0ef200f5b881aa85d4c3f..21db6b229aaae099c596c2c08fb24387ab4c4b02 100644 (file)
@@ -66,9 +66,11 @@ static inline void a_barrier()
 #define a_crash a_crash
 static inline void a_crash()
 {
-       __asm__ __volatile__(".byte 0xf1, 0xde"
+       __asm__ __volatile__(
 #ifndef __thumb__
-               ", 0xfd, 0xe7"
+               ".word 0xe7f000f0"
+#else
+               ".short 0xdeff"
 #endif
                : : : "memory");
 }