To redirect control flow if a fault occurs. Entries are registered with the
_ASM_EXTABLE() and placed in the .ex_table section, which is collected
together by the linker.
The .ex_table section is sorted on boot (to facilitate fast searching), and
searched in do_exception() when a fault or abort is encountered. If a
matching entry is found, control flow is redirected and the exception returned
from.
Some of the changes are to make the two asm_macros.h files safe to include in
C code. In addition, an extra selftest is added, making use of the exception
table infrastructure.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>