[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 01/24] S390: Make IPL reset address dynamic
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PATCH 01/24] S390: Make IPL reset address dynamic |
Date: |
Fri, 26 Apr 2013 20:19:10 +0200 |
We can have different load addresses for different blobs we boot with.
Make the reset IP dynamic, so that we can handle things more flexibly.
Signed-off-by: Alexander Graf <address@hidden>
---
hw/s390x/ipl.c | 22 +++++++++++-----------
1 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index 206d552..c43dfcd 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -48,8 +48,9 @@ typedef struct S390IPLClass {
typedef struct S390IPLState {
/*< private >*/
SysBusDevice parent_obj;
- /*< public >*/
+ uint64_t start_addr;
+ /*< public >*/
char *kernel;
char *initrd;
char *cmdline;
@@ -82,6 +83,7 @@ static int s390_ipl_init(SysBusDevice *dev)
bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
bios_size = load_image_targphys(bios_filename, ZIPL_IMAGE_START, 4096);
+ ipl->start_addr = ZIPL_IMAGE_START;
g_free(bios_filename);
if ((long)bios_size < 0) {
@@ -104,6 +106,13 @@ static int s390_ipl_init(SysBusDevice *dev)
}
/* we have to overwrite values in the kernel image, which are "rom" */
strcpy(rom_ptr(KERN_PARM_AREA), ipl->cmdline);
+
+ /*
+ * we can not rely on the ELF entry point, since up to 3.2 this
+ * value was 0x800 (the SALIPL loader) and it wont work. For
+ * all (Linux) cases 0x10000 (KERN_IMAGE_START) should be fine.
+ */
+ ipl->start_addr = KERN_IMAGE_START;
}
if (ipl->initrd) {
ram_addr_t initrd_offset, initrd_size;
@@ -138,16 +147,7 @@ static void s390_ipl_reset(DeviceState *dev)
{
S390IPLState *ipl = S390_IPL(dev);
- if (ipl->kernel) {
- /*
- * we can not rely on the ELF entry point, since up to 3.2 this
- * value was 0x800 (the SALIPL loader) and it wont work. For
- * all (Linux) cases 0x10000 (KERN_IMAGE_START) should be fine.
- */
- return s390_ipl_cpu(KERN_IMAGE_START);
- } else {
- return s390_ipl_cpu(ZIPL_IMAGE_START);
- }
+ s390_ipl_cpu(ipl->start_addr);
}
static void s390_ipl_class_init(ObjectClass *klass, void *data)
--
1.6.0.2
- [Qemu-ppc] [PULL 00/24] s390 patch queue 2013-04-26, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 02/24] S390: IPL: Support ELF firmware, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 04/24] S390: ccw firmware: Add start assembly, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 01/24] S390: Make IPL reset address dynamic,
Alexander Graf <=
- [Qemu-ppc] [PATCH 13/24] s390-ccw.img: Take care of the elf->img transition, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 11/24] s390-ccw.img: replace while loop with a disabled wait on s390 bios, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 10/24] S390: ccw firmware: Add Makefile, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 12/24] s390-ccw.img: build s390-ccw rom on s3900 system by default, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 14/24] s390-ccw.img: Fix compile warning in s390 ccw virtio code, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 05/24] S390: ccw firmware: Add main program, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 08/24] S390: ccw firmware: Add glue header, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 09/24] S390: ccw firmware: Add bootmap interpreter, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 18/24] s390-ccw.img: Get queue config from host., Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 23/24] Utilize selective runtime reg sync for hot code paths, Alexander Graf, 2013/04/26