coreboot: move common code to payload_run() from selfboot()
The selfboot() routine was perfoming most of the common teardown and stack checking infrastructure. Move that code into payload_run() to prepare removal of the selfboot() function. Change-Id: I29f2a5cfcc692f7a0fe2656cb1cda18158c49c6e Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/5297 Tested-by: build bot (Jenkins) Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
parent
bdf913ab01
commit
1322d7f9d5
|
@ -21,7 +21,10 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <boot/coreboot_tables.h>
|
#include <boot/coreboot_tables.h>
|
||||||
|
#include <fallback.h>
|
||||||
|
#include <lib.h>
|
||||||
#include <payload_loader.h>
|
#include <payload_loader.h>
|
||||||
|
#include <timestamp.h>
|
||||||
|
|
||||||
extern const struct payload_loader_ops vboot_payload_loader;
|
extern const struct payload_loader_ops vboot_payload_loader;
|
||||||
extern const struct payload_loader_ops cbfs_payload_loader;
|
extern const struct payload_loader_ops cbfs_payload_loader;
|
||||||
|
@ -77,5 +80,18 @@ void payload_run(const struct payload *payload)
|
||||||
if (payload == NULL)
|
if (payload == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
/* Reset to booting from this image as late as possible */
|
||||||
|
boot_successful();
|
||||||
|
|
||||||
|
printk(BIOS_DEBUG, "Jumping to boot code at %p\n", payload->entry);
|
||||||
|
post_code(POST_ENTER_ELF_BOOT);
|
||||||
|
|
||||||
|
timestamp_add_now(TS_SELFBOOT_JUMP);
|
||||||
|
|
||||||
|
/* Before we go off to run the payload, see if
|
||||||
|
* we stayed within our bounds.
|
||||||
|
*/
|
||||||
|
checkstack(_estack, 0);
|
||||||
|
|
||||||
selfboot(payload->entry);
|
selfboot(payload->entry);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,16 +22,12 @@
|
||||||
#include <arch/stages.h>
|
#include <arch/stages.h>
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include <cpu/cpu.h>
|
#include <cpu/cpu.h>
|
||||||
#include <fallback.h>
|
|
||||||
#include <boot/coreboot_tables.h>
|
#include <boot/coreboot_tables.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <cbfs.h>
|
#include <cbfs.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
#if CONFIG_COLLECT_TIMESTAMPS
|
|
||||||
#include <timestamp.h>
|
|
||||||
#endif
|
|
||||||
#include <payload_loader.h>
|
#include <payload_loader.h>
|
||||||
|
|
||||||
/* Maximum physical address we can use for the coreboot bounce buffer. */
|
/* Maximum physical address we can use for the coreboot bounce buffer. */
|
||||||
|
@ -527,21 +523,6 @@ out:
|
||||||
|
|
||||||
void selfboot(void *entry)
|
void selfboot(void *entry)
|
||||||
{
|
{
|
||||||
/* Reset to booting from this image as late as possible */
|
|
||||||
boot_successful();
|
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "Jumping to boot code at %p\n", entry);
|
|
||||||
post_code(POST_ENTER_ELF_BOOT);
|
|
||||||
|
|
||||||
#if CONFIG_COLLECT_TIMESTAMPS
|
|
||||||
timestamp_add_now(TS_SELFBOOT_JUMP);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Before we go off to run the payload, see if
|
|
||||||
* we stayed within our bounds.
|
|
||||||
*/
|
|
||||||
checkstack(_estack, 0);
|
|
||||||
|
|
||||||
/* Jump to kernel */
|
/* Jump to kernel */
|
||||||
jmp_to_elf_entry(entry, bounce_buffer, bounce_size);
|
jmp_to_elf_entry(entry, bounce_buffer, bounce_size);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue