[kvm-unit-tests,v4,10/17] powerpc/ppc64: add a boot rom
diff mbox

Message ID 1455544166-19766-11-git-send-email-drjones@redhat.com
State Superseded
Headers show

Commit Message

Andrew Jones Feb. 15, 2016, 1:49 p.m. UTC
Make a one line replacement for SLOF. This bootloader just
jumps to 0x400000, because we know the kernel will be there.

Signed-off-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Tested-by: Laurent Vivier <lvivier@redhat.com>
---
 powerpc/.gitignore      |  1 +
 powerpc/Makefile.common | 11 +++++++++--
 powerpc/boot_rom.S      |  5 +++++
 3 files changed, 15 insertions(+), 2 deletions(-)
 create mode 100644 powerpc/.gitignore
 create mode 100644 powerpc/boot_rom.S

Comments

David Gibson Feb. 17, 2016, 1:50 a.m. UTC | #1
On Mon, Feb 15, 2016 at 02:49:19PM +0100, Andrew Jones wrote:
> Make a one line replacement for SLOF. This bootloader just
> jumps to 0x400000, because we know the kernel will be there.
> 
> Signed-off-by: Andrew Jones <drjones@redhat.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> Tested-by: Laurent Vivier <lvivier@redhat.com>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  powerpc/.gitignore      |  1 +
>  powerpc/Makefile.common | 11 +++++++++--
>  powerpc/boot_rom.S      |  5 +++++
>  3 files changed, 15 insertions(+), 2 deletions(-)
>  create mode 100644 powerpc/.gitignore
>  create mode 100644 powerpc/boot_rom.S
> 
> diff --git a/powerpc/.gitignore b/powerpc/.gitignore
> new file mode 100644
> index 0000000000000..2f017a8e61d4b
> --- /dev/null
> +++ b/powerpc/.gitignore
> @@ -0,0 +1 @@
> +boot_rom.bin
> diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common
> index 13b828ab171d6..0c3eaba0d3aab 100644
> --- a/powerpc/Makefile.common
> +++ b/powerpc/Makefile.common
> @@ -11,7 +11,7 @@ endif
>  tests-common = \
>  	$(TEST_DIR)/selftest.elf
>  
> -all: test_cases
> +all: $(TEST_DIR)/boot_rom.bin test_cases
>  
>  ##################################################################
>  phys_base = $(LOADADDR)
> @@ -40,8 +40,15 @@ FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libgcc)
>  		-Wl,-T,powerpc/flat.lds,--build-id=none,-Ttext=$(start_addr) \
>  		$(filter %.o, $^) $(FLATLIBS)
>  
> +$(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf
> +	dd if=/dev/zero of=$@ bs=256 count=1
> +	$(OBJCOPY) -O binary $^ >(cat - >>$@)
> +
> +$(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o
> +	$(LD) -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
> +
>  powerpc_clean: libfdt_clean asm_offsets_clean
> -	$(RM) $(TEST_DIR)/*.{o,elf} \
> +	$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \
>  	      $(TEST_DIR)/.*.d lib/powerpc/.*.d
>  
>  ##################################################################
> diff --git a/powerpc/boot_rom.S b/powerpc/boot_rom.S
> new file mode 100644
> index 0000000000000..ae2c08ddce3c1
> --- /dev/null
> +++ b/powerpc/boot_rom.S
> @@ -0,0 +1,5 @@
> +#define SPAPR_KERNEL_LOAD_ADDR 0x400000
> +.text
> +.globl start
> +start:
> +	b	SPAPR_KERNEL_LOAD_ADDR - 0x100

Patch
diff mbox

diff --git a/powerpc/.gitignore b/powerpc/.gitignore
new file mode 100644
index 0000000000000..2f017a8e61d4b
--- /dev/null
+++ b/powerpc/.gitignore
@@ -0,0 +1 @@ 
+boot_rom.bin
diff --git a/powerpc/Makefile.common b/powerpc/Makefile.common
index 13b828ab171d6..0c3eaba0d3aab 100644
--- a/powerpc/Makefile.common
+++ b/powerpc/Makefile.common
@@ -11,7 +11,7 @@  endif
 tests-common = \
 	$(TEST_DIR)/selftest.elf
 
-all: test_cases
+all: $(TEST_DIR)/boot_rom.bin test_cases
 
 ##################################################################
 phys_base = $(LOADADDR)
@@ -40,8 +40,15 @@  FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libgcc)
 		-Wl,-T,powerpc/flat.lds,--build-id=none,-Ttext=$(start_addr) \
 		$(filter %.o, $^) $(FLATLIBS)
 
+$(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf
+	dd if=/dev/zero of=$@ bs=256 count=1
+	$(OBJCOPY) -O binary $^ >(cat - >>$@)
+
+$(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o
+	$(LD) -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
+
 powerpc_clean: libfdt_clean asm_offsets_clean
-	$(RM) $(TEST_DIR)/*.{o,elf} \
+	$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \
 	      $(TEST_DIR)/.*.d lib/powerpc/.*.d
 
 ##################################################################
diff --git a/powerpc/boot_rom.S b/powerpc/boot_rom.S
new file mode 100644
index 0000000000000..ae2c08ddce3c1
--- /dev/null
+++ b/powerpc/boot_rom.S
@@ -0,0 +1,5 @@ 
+#define SPAPR_KERNEL_LOAD_ADDR 0x400000
+.text
+.globl start
+start:
+	b	SPAPR_KERNEL_LOAD_ADDR - 0x100