[U-Boot] 64-bit x86 U-Boot?

Simon Glass sjg at chromium.org
Mon Feb 1 03:20:31 CET 2016


Hi Bin,

At present U-Boot supports booting a 64-bit kernel directly. It can
also be loaded as a 64-bit payload from EFI. But it cannot be built as
a 64-bit boot loader.

I took a bit of a look at this. It looks like we need to stay in
32-bit mode until the FSP is loaded. Also, to get to 64-bit mode I'm
pretty sure we need page tables, which means we need somewhere to put
them!

Looking at the board_f init sequence, it seems that arch_cpu_init() is
the earlist we could switch to 64-bit. We'd need to grab some memory
from somewhere to do this - I wonder if this can be CAR? There is no
SRAM on x86 chips I think.

For non-FSP devices we don't init the RAM until much later -
dram_init(). That means that a significant portion of the init
sequence would be 32-bit code. I'm not sure that will work.

I suppose one option is to only go to 64-bit mode when relocating. But
then we end up with lots of code that needs to run in 32-bit and
64-bit.

Do you have any ideas on this?

Regards,
Simon


More information about the U-Boot mailing list