ARM: Correct BUG() assembly to ensure it is endian-agnostic
authorBen Dooks <ben.dooks@codethink.co.uk>
Thu, 25 Jul 2013 13:38:03 +0000 (14:38 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Nov 2014 17:22:55 +0000 (09:22 -0800)
commit9f6bb0c21dbe0f0604a5fd3f8717677ffccd7aed
tree5822065c187b1af4208186905dc047fb31f7694e
parentf3c34e7e7a12401b080643beafbbbf249e017f24
ARM: Correct BUG() assembly to ensure it is endian-agnostic

commit 63328070eff2f4fd730c86966a0dbc976147c39f upstream.

Currently BUG() uses .word or .hword to create the necessary illegal
instructions. However if we are building BE8 then these get swapped
by the linker into different illegal instructions in the text. This
means that the BUG() macro does not get trapped properly.

Change to using <asm/opcodes.h> to provide the necessary ARM instruction
building as we cannot rely on gcc/gas having the `.inst` instructions
which where added to try and resolve this issue (reported by Dave Martin
<Dave.Martin@arm.com>).

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
Reviewed-by: Dave Martin <Dave.Martin@arm.com>
Cc: Wang Nan <wangnan0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/include/asm/bug.h
arch/arm/kernel/traps.c