Message ID | 20180109143430.10977-3-tuomas.tynkkynen@iki.fi |
---|---|
State | Changes Requested |
Delegated to: | Tom Rini |
Headers | show |
Series | ARM: Extend qemu_arm to support ARM64 | expand |
On Tue, Jan 09, 2018 at 04:34:28PM +0200, Tuomas Tynkkynen wrote: > It's mostly obvious, except that QEMU is annoying and requires an > explicit '-cpu cortex-a57' (or some other 64-bit core) to actually run > in 64-bit mode. > > Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> > --- > doc/README.qemu-arm | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/doc/README.qemu-arm b/doc/README.qemu-arm > index 2895e3b97f..5fe8e87a5c 100644 > --- a/doc/README.qemu-arm > +++ b/doc/README.qemu-arm > @@ -4,11 +4,12 @@ > # SPDX-License-Identifier: GPL-2.0+ > # > > -U-Boot on QEMU's 'virt' machine on ARM > -====================================== > +U-Boot on QEMU's 'virt' machine on ARM & AArch64 > +================================================ > > QEMU for ARM supports a special 'virt' machine designed for emulation and > virtualization purposes. This document describes how to run U-Boot under it. > +Both 32-bit ARM and AArch64 are supported. > > The 'virt' platform provides the following as the basic functionality: > > @@ -17,7 +18,7 @@ The 'virt' platform provides the following as the basic functionality: > - A generated device tree blob placed at the start of RAM > - A freely configurable amount of RAM, described by the DTB > - A PL011 serial port, discoverable via the DTB > - - An ARMv7 architected timer > + - An ARMv7/ARMv8 architected timer > - PSCI for rebooting the system > - A generic ECAM-based PCI host controller, discoverable via the DTB > > @@ -25,19 +26,31 @@ Additionally, a number of optional peripherals can be added to the PCI bus. > > Building U-Boot > --------------- > -Set the CROSS_COMPILE and ARCH=arm environment variables as usual, and run: > +Set the CROSS_COMPILE environment variable as usual, and run: > > +- For ARM: > + export ARCH=arm > make qemu_arm_defconfig > make > > +- For AArch64: > + export ARCH=arm64 > + make qemu_arm64_defconfig > + make This isn't Linux, we don't need ARCH set in the env, it's part of the Kconfig choices. Thanks!
On 01/09/2018 06:22 PM, Tom Rini wrote: > On Tue, Jan 09, 2018 at 04:34:28PM +0200, Tuomas Tynkkynen wrote: >> >> Building U-Boot >> --------------- >> -Set the CROSS_COMPILE and ARCH=arm environment variables as usual, and run: >> +Set the CROSS_COMPILE environment variable as usual, and run: >> >> +- For ARM: >> + export ARCH=arm >> make qemu_arm_defconfig >> make >> >> +- For AArch64: >> + export ARCH=arm64 >> + make qemu_arm64_defconfig >> + make > > This isn't Linux, we don't need ARCH set in the env, it's part of the > Kconfig choices. Thanks! > Okay, good to know. Will send a new revision with this fixed in a couple of days. Thanks, Tuomas
diff --git a/doc/README.qemu-arm b/doc/README.qemu-arm index 2895e3b97f..5fe8e87a5c 100644 --- a/doc/README.qemu-arm +++ b/doc/README.qemu-arm @@ -4,11 +4,12 @@ # SPDX-License-Identifier: GPL-2.0+ # -U-Boot on QEMU's 'virt' machine on ARM -====================================== +U-Boot on QEMU's 'virt' machine on ARM & AArch64 +================================================ QEMU for ARM supports a special 'virt' machine designed for emulation and virtualization purposes. This document describes how to run U-Boot under it. +Both 32-bit ARM and AArch64 are supported. The 'virt' platform provides the following as the basic functionality: @@ -17,7 +18,7 @@ The 'virt' platform provides the following as the basic functionality: - A generated device tree blob placed at the start of RAM - A freely configurable amount of RAM, described by the DTB - A PL011 serial port, discoverable via the DTB - - An ARMv7 architected timer + - An ARMv7/ARMv8 architected timer - PSCI for rebooting the system - A generic ECAM-based PCI host controller, discoverable via the DTB @@ -25,19 +26,31 @@ Additionally, a number of optional peripherals can be added to the PCI bus. Building U-Boot --------------- -Set the CROSS_COMPILE and ARCH=arm environment variables as usual, and run: +Set the CROSS_COMPILE environment variable as usual, and run: +- For ARM: + export ARCH=arm make qemu_arm_defconfig make +- For AArch64: + export ARCH=arm64 + make qemu_arm64_defconfig + make + Running U-Boot -------------- The minimal QEMU command line to get U-Boot up and running is: +- For ARM: qemu-system-arm -machine virt,highmem=off -bios u-boot.bin +- For AArch64: + qemu-system-aarch64 -machine virt,highmem=off -cpu cortex-a57 -bios u-boot.bin + The 'highmem=off' parameter to the 'virt' machine is required for PCI to work -in U-Boot. +in U-Boot. Also, for some odd reason qemu-system-aarch64 needs to be explicitly +told to use a 64-bit CPU or it will boot in 32-bit mode. Additional peripherals that have been tested to work in both U-Boot and Linux can be enabled with the following command line parameters:
It's mostly obvious, except that QEMU is annoying and requires an explicit '-cpu cortex-a57' (or some other 64-bit core) to actually run in 64-bit mode. Signed-off-by: Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> --- doc/README.qemu-arm | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-)