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)
committerBen Dooks <ben.dooks@codethink.co.uk>
Sat, 19 Oct 2013 19:46:35 +0000 (20:46 +0100)
commit63328070eff2f4fd730c86966a0dbc976147c39f
treeac939b9767e21a42a3354bdc69aaefc23e2c62d0
parent3460743e025addc1ecbd496db2231181a2431774
ARM: Correct BUG() assembly to ensure it is endian-agnostic

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>
arch/arm/include/asm/bug.h
arch/arm/kernel/traps.c