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

Albert ARIBAUD albert.u.boot at aribaud.net
Mon Feb 1 08:14:46 CET 2016


Hello Simon,

On Sun, 31 Jan 2016 19:20:31 -0700, Simon Glass <sjg at chromium.org>
wrote:
> 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?

How about starting with implementing the last option, i.e. switch to 64
bits when DDR is available, mainline that, then progressively work your
way toward an earlier switch?

> Regards,
> Simon

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list