initrd support (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1306 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
0b9dc5e4c3
commit
713c45faf8
25
hw/sun4m.c
25
hw/sun4m.c
|
@ -25,6 +25,7 @@
|
||||||
#include "m48t08.h"
|
#include "m48t08.h"
|
||||||
|
|
||||||
#define KERNEL_LOAD_ADDR 0x00004000
|
#define KERNEL_LOAD_ADDR 0x00004000
|
||||||
|
#define INITRD_LOAD_ADDR 0x00800000
|
||||||
#define PROM_ADDR 0xffd00000
|
#define PROM_ADDR 0xffd00000
|
||||||
#define PROM_FILENAMEB "proll.bin"
|
#define PROM_FILENAMEB "proll.bin"
|
||||||
#define PROM_FILENAMEE "proll.elf"
|
#define PROM_FILENAMEE "proll.elf"
|
||||||
|
@ -135,7 +136,8 @@ void sun4m_init(int ram_size, int vga_ram_size, int boot_device,
|
||||||
{
|
{
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
int ret, linux_boot;
|
int ret, linux_boot;
|
||||||
unsigned long vram_size = 0x100000, prom_offset;
|
unsigned int i;
|
||||||
|
unsigned long vram_size = 0x100000, prom_offset, initrd_size;
|
||||||
|
|
||||||
linux_boot = (kernel_filename != NULL);
|
linux_boot = (kernel_filename != NULL);
|
||||||
|
|
||||||
|
@ -180,5 +182,26 @@ void sun4m_init(int ram_size, int vga_ram_size, int boot_device,
|
||||||
kernel_filename);
|
kernel_filename);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* load initrd */
|
||||||
|
initrd_size = 0;
|
||||||
|
if (initrd_filename) {
|
||||||
|
initrd_size = load_image(initrd_filename, phys_ram_base + INITRD_LOAD_ADDR);
|
||||||
|
if (initrd_size < 0) {
|
||||||
|
fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
|
||||||
|
initrd_filename);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (initrd_size > 0) {
|
||||||
|
for (i = 0; i < 64 * TARGET_PAGE_SIZE; i += TARGET_PAGE_SIZE) {
|
||||||
|
if (ldl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i)
|
||||||
|
== 0x48647253) { // HdrS
|
||||||
|
stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 16, INITRD_LOAD_ADDR);
|
||||||
|
stl_raw(phys_ram_base + KERNEL_LOAD_ADDR + i + 20, initrd_size);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue