diff mbox

[kvm-unit-tests,v2,06/14] powerpc/ppc64: add boot rom source

Message ID 1454957594-30601-7-git-send-email-drjones@redhat.com
State Superseded
Headers show

Commit Message

Andrew Jones Feb. 8, 2016, 6:53 p.m. UTC
Make a one line replacement for SLOF. This bootloader just
jumps to 0x400000, because we know the kernel will be there.
This commit allows rebuilding of the bootloader, as long
as the SLOF build_romfs tool is present, but since it would be
a pain to require that tool for ever build, we'll just commit
the binary rom image too with the next commit.

Signed-off-by: Andrew Jones <drjones@redhat.com>
---
 powerpc/rom/.gitignore |  1 +
 powerpc/rom/Makefile   | 36 ++++++++++++++++++++++++++++++++++++
 powerpc/rom/header.img |  1 +
 powerpc/rom/rom.ffs    |  4 ++++
 powerpc/rom/stage1.S   |  5 +++++
 5 files changed, 47 insertions(+)
 create mode 100644 powerpc/rom/.gitignore
 create mode 100644 powerpc/rom/Makefile
 create mode 100644 powerpc/rom/header.img
 create mode 100644 powerpc/rom/rom.ffs
 create mode 100644 powerpc/rom/stage1.S

Comments

Thomas Huth Feb. 12, 2016, 6:27 a.m. UTC | #1
On 08.02.2016 19:53, Andrew Jones wrote:
> Make a one line replacement for SLOF. This bootloader just
> jumps to 0x400000, because we know the kernel will be there.
> This commit allows rebuilding of the bootloader, as long
> as the SLOF build_romfs tool is present, but since it would be
> a pain to require that tool for ever build, we'll just commit
> the binary rom image too with the next commit.
> 
> Signed-off-by: Andrew Jones <drjones@redhat.com>

I haven't tested it yet, but I think this should also be doable without
the build_romfs tool? Since QEMU does not care about the header that
this tool creates, it should not matter whether there is some valid data
in the first 256 or simply zeros. So simply linking with
"-Wl,--oformat,binary -Ttext=0x100" or so should do the job, also?

 Thomas

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Jones Feb. 12, 2016, 10:07 a.m. UTC | #2
On Fri, Feb 12, 2016 at 07:27:32AM +0100, Thomas Huth wrote:
> On 08.02.2016 19:53, Andrew Jones wrote:
> > Make a one line replacement for SLOF. This bootloader just
> > jumps to 0x400000, because we know the kernel will be there.
> > This commit allows rebuilding of the bootloader, as long
> > as the SLOF build_romfs tool is present, but since it would be
> > a pain to require that tool for ever build, we'll just commit
> > the binary rom image too with the next commit.
> > 
> > Signed-off-by: Andrew Jones <drjones@redhat.com>
> 
> I haven't tested it yet, but I think this should also be doable without
> the build_romfs tool? Since QEMU does not care about the header that
> this tool creates, it should not matter whether there is some valid data
> in the first 256 or simply zeros. So simply linking with
> "-Wl,--oformat,binary -Ttext=0x100" or so should do the job, also?

That would be much nicer indeed! I can try it when preparing v3.

Thanks,
drew
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/powerpc/rom/.gitignore b/powerpc/rom/.gitignore
new file mode 100644
index 0000000000000..a8a0dcec44720
--- /dev/null
+++ b/powerpc/rom/.gitignore
@@ -0,0 +1 @@ 
+*.bin
diff --git a/powerpc/rom/Makefile b/powerpc/rom/Makefile
new file mode 100644
index 0000000000000..03b8bf7e0b5d2
--- /dev/null
+++ b/powerpc/rom/Makefile
@@ -0,0 +1,36 @@ 
+#
+# powerpc boot_rom makefile
+#
+# Authors: Andrew Jones <drjones@redhat.com>
+#
+
+# Use SLOF's build_romfs tool (git://git.qemu-project.org/SLOF.git)
+BUILD_ROMFS ?= build_romfs
+
+ifeq ($(wildcard ../../config.mak),)
+$(error run ./configure first. See ./configure -h)
+endif
+
+include ../../config.mak
+
+.PHONY: clean distclean
+
+all: boot_rom.bin
+
+boot_rom.bin: stage1.bin
+	$(BUILD_ROMFS) rom.ffs boot_rom.bin
+
+stage1.bin: stage1.elf
+	$(OBJCOPY) -O binary $^ $@
+
+stage1.elf: stage1.o
+	$(LD) -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
+
+stage1.o: stage1.S
+	$(CC) -c -o $@ $<
+
+clean:
+	$(RM) stage1.{o,elf,bin}
+
+distclean: clean
+	$(RM) boot_rom.bin
diff --git a/powerpc/rom/header.img b/powerpc/rom/header.img
new file mode 100644
index 0000000000000..794129c95eec5
--- /dev/null
+++ b/powerpc/rom/header.img
@@ -0,0 +1 @@ 
+Key.Polynome....XXXXXXXX..Mask..XXXXXXXX.Polynome.Length....XXXX.Header.and.File.lengthXXXXXXXX... und weiter im Text!
diff --git a/powerpc/rom/rom.ffs b/powerpc/rom/rom.ffs
new file mode 100644
index 0000000000000..b7851c00c462b
--- /dev/null
+++ b/powerpc/rom/rom.ffs
@@ -0,0 +1,4 @@ 
+# FFile-Name	Real Filename			Flags			ROM-Offset i/a
+#--------------|-------------------------------|-----------------------|--------------
+header		header.img			0			0
+stage1		stage1.bin			1			0x100
diff --git a/powerpc/rom/stage1.S b/powerpc/rom/stage1.S
new file mode 100644
index 0000000000000..ae2c08ddce3c1
--- /dev/null
+++ b/powerpc/rom/stage1.S
@@ -0,0 +1,5 @@ 
+#define SPAPR_KERNEL_LOAD_ADDR 0x400000
+.text
+.globl start
+start:
+	b	SPAPR_KERNEL_LOAD_ADDR - 0x100