From d97591c34571b66157c540355457c4fea794a611 Mon Sep 17 00:00:00 2001 From: Asami Doi Date: Fri, 7 Jun 2019 16:22:03 +0900 Subject: [PATCH] payloads/libpayload: Update a Makefile for sample libpayload and make a configuraton for QEMU/ARM. This CL allows building a sample libpayload for QEMU/ARM. Change-Id: Ia32872c43a99357aa966de3582f6fdb2e2652517 Signed-off-by: Asami Doi Reviewed-on: https://review.coreboot.org/c/coreboot/+/33287 Tested-by: build bot (Jenkins) Reviewed-by: Raul Rangel Reviewed-by: Julius Werner --- payloads/libpayload/README | 12 +++++++++--- .../libpayload/configs/config.emulation-qemu-arm | 6 ++++++ payloads/libpayload/sample/Makefile | 11 ++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 payloads/libpayload/configs/config.emulation-qemu-arm diff --git a/payloads/libpayload/README b/payloads/libpayload/README index fdf9b1840dc0..d35f685fd5b7 100644 --- a/payloads/libpayload/README +++ b/payloads/libpayload/README @@ -22,12 +22,18 @@ Installation $ make - $ sudo make install (optional, will install into /opt per default) + $ make install (optional, will install into ./install per default) -As libpayload is for 32bit x86 systems only, you might have to install the -32bit libgcc version, otherwise your payloads will fail to compile. +On x86 systems, libpayload will always be 32-bit even if your host OS runs +in 64-bit, so you might have to install the 32-bit libgcc version. On Debian systems you'd do 'apt-get install gcc-multilib' for example. +Run 'make distclean' before switching boards. This command will remove +your current .config file, so you need 'make menuconfig' again or +'make defconfig' in order to set up configuration. Default configuration +is based on 'configs/defconfig'. See the configs/ directory for examples +of configuration. + Usage ----- diff --git a/payloads/libpayload/configs/config.emulation-qemu-arm b/payloads/libpayload/configs/config.emulation-qemu-arm new file mode 100644 index 000000000000..4b69caf737a2 --- /dev/null +++ b/payloads/libpayload/configs/config.emulation-qemu-arm @@ -0,0 +1,6 @@ +CONFIG_LP_ARCH_ARM=y +CONFIG_LP_STACK_SIZE=64000 +CONFIG_LP_BASE_ADDRESS=0x62030000 +CONFIG_LP_TINYCURSES=y +CONFIG_LP_8250_SERIAL_CONSOLE=y +CONFIG_LP_TIMER_GENERIC_HZ=1000000 diff --git a/payloads/libpayload/sample/Makefile b/payloads/libpayload/sample/Makefile index 5931d5eb110d..18121dfe8019 100644 --- a/payloads/libpayload/sample/Makefile +++ b/payloads/libpayload/sample/Makefile @@ -28,19 +28,20 @@ ## # Sample libpayload Makefile. -include ../.xcompile include ../.config +include ../.xcompile -ARCH-$(CONFIG_LP_ARCH_ARMV) := arm -ARCH-$(CONFIG_LP_ARCH_POWERPC) := powerpc -ARCH-$(CONFIG_LP_ARCH_X86) := i386 +ARCH-$(CONFIG_LP_ARCH_ARM) := arm +ARCH-$(CONFIG_LP_ARCH_X86) := x86_32 +ARCH-$(CONFIG_LP_ARCH_ARM64) := arm64 +ARCH-$(CONFIG_LP_ARCH_MIPS) := mips CC := $(CC_$(ARCH-y)) AS := $(AS_$(ARCH-y)) LIBPAYLOAD_DIR := ../install/libpayload XCC := CC="$(CC)" $(LIBPAYLOAD_DIR)/bin/lpgcc XAS := AS="$(AS)" $(LIBPAYLOAD_DIR)/bin/lpas -CFLAGS := -Wall -Werror -Os +CFLAGS := -fno-builtin -Wall -Werror -Os TARGET := hello OBJS := $(TARGET).o