From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [RESEND PATCH v3 7/7] x86: Use the existing stack when chain-loading
Date: Wed, 8 Apr 2020 12:57:55 -0600 [thread overview]
Message-ID: <20200408185755.116336-7-sjg@chromium.org> (raw)
In-Reply-To: <20200408185755.116336-1-sjg@chromium.org>
With chromebook_coral we normally run TPL->SPL->U-Boot. This is the
'bare metal' case.
When running from coreboot we put u-boot.bin in the RW_LEGACY portion
of the image, e.g. with:
cbfstool image-coral.serial.bin add-flat-binary -r RW_LEGACY \
-f /tmp/b/chromebook_coral/u-boot.bin -n altfw/u-boot \
-c lzma -l 0x1110000 -e 0x1110000
In this case U-Boot is run from coreboot (actually Depthcharge, its
payload) so we cannot access CAR. Use the existing stack instead.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
Changes in v3: None
Changes in v2: None
arch/x86/cpu/start_from_spl.S | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/arch/x86/cpu/start_from_spl.S b/arch/x86/cpu/start_from_spl.S
index 22cab2dd6ce..75c328fd7a8 100644
--- a/arch/x86/cpu/start_from_spl.S
+++ b/arch/x86/cpu/start_from_spl.S
@@ -14,18 +14,30 @@
.globl _start
.type _start, @function
_start:
- /* Set up memory using the existing stack */
+ /*
+ * If running from coreboot, CAR is no-longer available. Use the
+ * existing stack, which is large enough.
+ */
+ call x86_detect_coreboot
+ cmp $0, %eax
+ jne use_existing_stack
+
movl $(CONFIG_SYS_CAR_ADDR + CONFIG_SYS_CAR_SIZE - 4), %eax
#ifdef CONFIG_DCACHE_RAM_MRC_VAR_SIZE
subl $CONFIG_DCACHE_RAM_MRC_VAR_SIZE, %eax
#endif
+ jmp 2f
/*
- * We don't subject CONFIG_DCACHE_RAM_MRC_VAR_SIZE since memory is
+ * We don't subtract CONFIG_DCACHE_RAM_MRC_VAR_SIZE since memory is
* already set up. This has the happy side-effect of putting gd in a
* new place separate from SPL, so the memset() in
* board_init_f_init_reserve() does not cause any problems (otherwise
* it would zero out the gd and crash)
*/
+ /* Set up memory using the existing stack */
+use_existing_stack:
+ mov %esp, %eax
+2:
call board_init_f_alloc_reserve
mov %eax, %esp
--
2.26.0.292.g33ef6b2f38-goog
next prev parent reply other threads:[~2020-04-08 18:57 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-08 18:57 [RESEND PATCH v3 0/7] x86: Improve support for chain-loading U-Boot Simon Glass
2020-04-08 18:57 ` [RESEND PATCH v3 1/7] x86: fsp: Allow skipping init code when chain loading Simon Glass
2020-04-08 18:57 ` [RESEND PATCH v3 2/7] x86: apl: Skip " Simon Glass
2020-04-08 18:57 ` [RESEND PATCH v3 3/7] x86: cpu: " Simon Glass
2020-04-08 18:57 ` [RESEND PATCH v3 4/7] pci: Avoid auto-config " Simon Glass
2020-04-08 18:57 ` [RESEND PATCH v3 5/7] board: Add a gd flag for " Simon Glass
2020-04-23 11:03 ` Bin Meng
2020-04-23 14:00 ` Bin Meng
2020-04-26 19:45 ` Simon Glass
2020-04-08 18:57 ` [RESEND PATCH v3 6/7] x86: Add a way to detect running from coreboot Simon Glass
2020-04-23 11:02 ` Bin Meng
2020-04-08 18:57 ` Simon Glass [this message]
2020-04-23 11:06 ` [RESEND PATCH v3 0/7] x86: Improve support for chain-loading U-Boot Bin Meng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200408185755.116336-7-sjg@chromium.org \
--to=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.