coreboot-kgpe-d16/payloads/libpayload/include
Julius Werner 5c0e72ff99 libpayload: arm64: Make exception handling closer to arm32
This patch reworks the arm64 exception handling to be more similar to
how it works on arm32. This includes a bunch of features like actually
saving and restoring more exception state in the exception_state
structure and supporting the same sort of partial reentrancy that is
useful for GDB. Since there's no instruction to directly load into or
store out of SP on arm64, we can't do quite the same thing where we use
that to read an exception_state_ptr variable right after exception entry
when no other register is available. But we can do something very
similar by (ab-)using the "high" stack pointer (SP_EL2) as a pointer to
the exception_state struct and providing a function to change it.

Change-Id: Ia16a1124be1824392a309ae1f4cb031547d184c1
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/29018
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2018-10-12 20:17:28 +00:00
..
arm/arch Rename __attribute__((packed)) --> __packed 2017-07-13 19:45:59 +00:00
arm64/arch libpayload: arm64: Make exception handling closer to arm32 2018-10-12 20:17:28 +00:00
arpa Refactor the endianness conversion functions and header files. 2012-11-08 19:49:51 +01:00
mips/arch Rename __attribute__((packed)) --> __packed 2017-07-13 19:45:59 +00:00
pci libpayload: Add pci_free_dev() and some boilerplate 2017-12-07 21:51:24 +00:00
storage libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
sys libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
udc tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
usb libpayload: Add UNKNOWN_SPEED to usb_speed enum 2018-07-17 15:23:36 +00:00
x86/arch libpayload/apic: Only ACK interrupts triggered by the APIC 2018-10-04 15:24:20 +00:00
archive.h libpayload: add archive.h 2015-12-16 19:00:53 +01:00
assert.h libpayload: Fix the format string of the assert macro. 2012-11-07 18:36:05 +01:00
cbfs.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
cbfs_core.h util/cbfstool: Support FIT payloads 2018-06-15 09:13:24 +00:00
cbfs_ram.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
cbgfx.h detachables: Add invert parameter 2017-05-25 18:23:56 +02:00
compiler.h add __must_check to */compiler.h 2017-08-08 18:18:03 +00:00
coreboot_tables.h cbtable: remove chromeos_acpi from cbtable 2018-08-22 15:33:50 +00:00
ctype.h Attached patch moves functions out of the huge libpayload.h into headers 2010-06-24 11:16:10 +00:00
die.h libpayload: Add a new "die" function to fatally signal programming errors. 2014-09-15 17:37:13 +02:00
endian.h endian: Fix bebitenc() to actually encode big-endian 2017-11-06 20:46:37 +00:00
errno.h Attached patch moves functions out of the huge libpayload.h into headers 2010-06-24 11:16:10 +00:00
exception.h libpayload/x86/exception: Add ability to handle user defined interrupts 2018-09-10 15:01:04 +00:00
fmap_serialized.h Rename __attribute__((packed)) --> __packed 2017-07-13 19:45:59 +00:00
gdb.h tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
getopt.h Since some people disapprove of white space cleanups mixed in regular commits 2010-04-27 06:56:47 +00:00
inttypes.h libpayload: Start using only internal and compiler headers. 2013-03-13 22:04:44 +01:00
ipchksum.h libpayload: Add a new "die" function to fatally signal programming errors. 2014-09-15 17:37:13 +02:00
kconfig.h libpayload: Change CONFIG_* to CONFIG_LP_* in the kconfig. 2014-08-05 18:44:08 +02:00
keycodes.h libpayload: Make keycode constants available outside of curses.h. 2013-03-18 20:45:48 +01:00
libpayload.h libpayload/libc/time: Add an arch_ndelay() 2018-09-12 14:15:18 +00:00
limits.h libpayload: Improve compatibility 2011-07-16 11:09:28 +02:00
lz4.h cbfs: Add LZ4 in-place decompression support for pre-RAM stages 2016-02-22 21:38:37 +01:00
lzma.h LZMA: Add a version of ulzma which takes the input and output buffer sizes. 2014-08-10 22:29:51 +02:00
malloc.h libpayload: Provide atol(), malloc.h 2011-07-07 22:29:53 +02:00
multiboot_tables.h libpayload: multiboot - support meminfo flag 2017-02-17 18:20:38 +01:00
panel.h libpayload: Add PDCurses and ncurses' libform/libmenu 2011-08-04 08:10:41 +02:00
pci.h libpayload: Add definitions for more config space registers. 2012-11-07 18:36:27 +01:00
queue.h payloads: Remove/fix trailing whitespace 2018-09-04 12:38:40 +00:00
stdarg.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
stddef.h libpayload/libc/time: Add an arch_ndelay() 2018-09-12 14:15:18 +00:00
stdint.h libpayload: Add ptrdiff_t typedef 2015-10-20 16:50:25 +02:00
stdio.h Rename __attribute__((packed)) --> __packed 2017-07-13 19:45:59 +00:00
stdlib.h libpayload: Move GDB functions to stdlib.h 2018-04-19 20:39:29 +00:00
string.h libpayload: UTF-16LE to ASCII conversion 2015-03-20 09:59:48 +01:00
strings.h libpayload: Revive ffs() 2015-09-10 20:11:33 +00:00
swab.h libpayload: arch/mips: Add basic MIPS architecture support 2015-03-21 11:07:50 +01:00
sysinfo.h cbtable: remove chromeos_acpi from cbtable 2018-08-22 15:33:50 +00:00
term.h libpayload: remove trailing whitespace and run dos2unix 2011-11-01 19:08:23 +01:00
time.h libpayload: add time() 2017-08-21 16:53:20 +00:00
unistd.h libpayload: Don't sneak in compiler includes 2013-04-18 02:50:28 +02:00
video_console.h Add coreboot framebuffer support to libpayload 2010-03-25 18:56:26 +00:00