arch/x86,lib/thread: Enable thread support in romstage
This change does the following: * Pushes the cpu_info struct into the top of the stack (just like c_start.S). This is required so the cpu_info function works correctly. * Adds the thread.c to the romstage build. I only enabled this for romstage since I haven't done any tests in other stages, but in theory it should work for other stages. BUG=b:179699789 TEST=Boot guybrush with threads enabled in romstage Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I8e32e1c54dea0d0c85dd6d6753147099aa54b9b5 Reviewed-on: https://review.coreboot.org/c/coreboot/+/56494 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
Patrick Georgi
parent
e279d90d4d
commit
ca0606e04f
@@ -154,6 +154,8 @@ romstage-$(CONFIG_X86_TOP4G_BOOTMEDIA_MAP) += mmap_boot.c
|
||||
romstage-y += postcar_loader.c
|
||||
romstage-$(CONFIG_COLLECT_TIMESTAMPS_TSC) += timestamp.c
|
||||
romstage-$(CONFIG_HAVE_CF9_RESET) += cf9_reset.c
|
||||
romstage-$(CONFIG_COOP_MULTITASKING) += thread.c
|
||||
romstage-$(CONFIG_COOP_MULTITASKING) += thread_switch.S
|
||||
|
||||
romstage-srcs += $(wildcard $(src)/mainboard/$(MAINBOARDDIR)/romstage.c)
|
||||
romstage-libs ?=
|
||||
|
@@ -35,6 +35,14 @@ _start:
|
||||
/* reset stack pointer to CAR/EARLYRAM stack */
|
||||
mov $_STACK_TOP, %esp
|
||||
|
||||
#if CONFIG(COOP_MULTITASKING)
|
||||
/* Push the thread pointer. */
|
||||
push $0
|
||||
#endif
|
||||
/* Push the CPU index and struct CPU */
|
||||
push $0
|
||||
push $0
|
||||
|
||||
/* clear .bss section as it is not shared */
|
||||
cld
|
||||
xor %eax, %eax
|
||||
|
Reference in New Issue
Block a user