coreboot-kgpe-d16/payloads/libpayload/arch/x86
Mathias Krause 57dc93c967 libpayload: x86/exec - simplify and robustify the code
Simplify the code by directly using the arguments on the stack as base
pointer relative memory references, instead of loading them into
intermediate registers first.

Make it more robust by preserving all callee saved registers mandated by
the C calling convention (and only those), namely EBP, EBX, ESI and EDI.

Don't assume anything about the register state when the called function
returns -- beside the segment registers and the stack pointer to be
still the same as before the call.

Change-Id: I383d6ccefc5b3d5cca37a1c9b638c231bbc48aa8
Signed-off-by: Mathias Krause <minipli@googlemail.com>
Reviewed-on: https://review.coreboot.org/18335
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
2017-02-17 17:27:55 +01:00
..
Kconfig libpayload: Rename Config.in -> Kconfig 2015-06-12 02:42:43 +02:00
Makefile.inc libpayload: Keep stack boundary small on x86 2015-07-01 20:55:18 +02:00
coreboot.c libpayload: move MRC processing to x86 path and remove ACPI_GNVS duplication 2015-03-20 15:33:47 +01:00
exception.c
exception_asm.S
exec.S libpayload: x86/exec - simplify and robustify the code 2017-02-17 17:27:55 +01:00
gdb.c tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
head.S libpayload: head.S: Avoid clearing BSS (and heap) again 2016-08-13 02:46:19 +02:00
libpayload.ldscript libpayload: Move base address, stack and heap size to Kconfig 2016-03-15 20:53:38 +01:00
main.c libpayload: x86/main - propagate return value of main() 2017-02-17 17:25:11 +01:00
multiboot.c libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
rom_media.c libpayload: Make Kconfig bools use IS_ENABLED() 2015-06-30 18:55:15 +02:00
selfboot.c libpayload: Introduce new Kconfig to explicitly allow GPL code 2015-01-09 07:06:27 +01:00
string.c tree: drop last paragraph of GPL copyright header 2015-10-31 21:37:39 +01:00
sysinfo.c libpayload: honor TSC information under CONFIG_LP_TIMER_RDTSC 2016-02-19 19:50:25 +01:00
timer.c
util.S
virtual.c