Merge git://git.denx.de/u-boot-mpc85xx
[oweals/u-boot.git] / doc / README.x86
index 8cc46725f2a1a61dced78353630adcc444a31ff1..8e0a3f36edfe29e8e956455a5b015b55db9a7242 100644 (file)
@@ -32,7 +32,7 @@ are supported:
    - Link (Chromebook Pixel)
    - Minnowboard MAX
    - Samus (Chromebook Pixel 2015)
-   - QEMU x86
+   - QEMU x86 (32-bit & 64-bit)
 
 As for loading an OS, U-Boot supports directly booting a 32-bit or 64-bit
 Linux kernel as part of a FIT image. It also supports a compressed zImage.
@@ -185,6 +185,22 @@ If you are using em100, then this command will flash write -Boot:
 
    em100 -s -d filename.rom -c W25Q64CV -r
 
+Flash map for samus / broadwell:
+
+   fffff800    SYS_X86_START16
+   ffff0000    RESET_SEG_START
+   fffd8000    TPL_TEXT_BASE
+   fffa0000    X86_MRC_ADDR
+   fff90000    VGA_BIOS_ADDR
+   ffed0000    SYS_TEXT_BASE
+   ffea0000    X86_REFCODE_ADDR
+   ffe70000    SPL_TEXT_BASE
+   ffbf8000    CONFIG_ENV_OFFSET (environemnt offset)
+   ffbe0000    rw-mrc-cache (Memory-reference-code cache)
+   ffa00000    <spare>
+   ff801000    intel-me (address set by descriptor.bin)
+   ff800000    intel-descriptor
+
 ---
 
 Intel Crown Bay specific instructions for bare mode:
@@ -376,7 +392,9 @@ QEMU x86 target instructions for bare mode:
 
 To build u-boot.rom for QEMU x86 targets, just simply run
 
-$ make qemu-x86_defconfig
+$ make qemu-x86_defconfig (for 32-bit)
+or
+$ make qemu-x86_64_defconfig (for 64-bit)
 $ make all
 
 Note this default configuration will build a U-Boot for the QEMU x86 i440FX
@@ -479,6 +497,19 @@ Here the kernel (bzImage) is loaded to 01000000 and initrd is to 04000000. Then,
 
 => zboot 01000000 - 04000000 1b1ab50
 
+To run 64-bit U-Boot, qemu-system-x86_64 should be used instead, e.g.:
+$ qemu-system-x86_64 -nographic -bios path/to/u-boot.rom
+
+A specific CPU can be specified via the '-cpu' parameter but please make
+sure the specified CPU supports 64-bit like '-cpu core2duo'. Conversely
+'-cpu pentium' won't work for obvious reasons that the processor only
+supports 32-bit.
+
+Note 64-bit support is very preliminary at this point. Lots of features
+are missing in the 64-bit world. One notable feature is the VGA console
+support which is currently missing, so that you must specify '-nographic'
+to get 64-bit U-Boot up and running.
+
 Updating U-Boot on Edison
 -------------------------
 By default Intel Edison boards are shipped with preinstalled heavily
@@ -1145,27 +1176,10 @@ to load a 'u-boot-payload.efi', see below test logs on QEMU.
 
 See README.u-boot_on_efi and README.uefi for details of EFI support in U-Boot.
 
-64-bit Support
---------------
-U-Boot supports booting a 64-bit kernel directly and is able to change to
-64-bit mode to do so. However, U-Boot itself is currently always built
-in 32-bit mode. Some access to the full memory range is provided with
-arch_phys_memset().
-
-The development work to make U-Boot itself run in 64-bit mode has not yet
-been attempted. The best approach would likely be to build a 32-bit SPL
-image for U-Boot, with CONFIG_SPL_BUILD. This could then handle the early CPU
-init in 16-bit and 32-bit mode, running the FSP and any other binaries that
-are needed. Then it could change to 64-bit model and jump to U-Boot proper.
-
-Given U-Boot's extensive 64-bit support this has not been a high priority,
-but it would be a nice addition.
-
 TODO List
 ---------
 - Audio
 - Chrome OS verified boot
-- Building U-Boot to run in 64-bit mode
 
 References
 ----------