aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-08-12 15:58:35 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2008-08-12 15:58:35 +0000
commitf88e4b91bea91beaa4f9dde28ccb4aa973c1dd4e (patch)
tree219debe4801304a5d9d706ddeac6a83f2ac6ad3c
parent66de733bdb37a7542e5313c18f44d99d5faf6cb7 (diff)
Allow boot without a drive on Sparc machines (partly extracted from Xen)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4997 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--hw/boards.h1
-rw-r--r--hw/sun4m.c12
-rw-r--r--hw/sun4u.c2
-rw-r--r--vl.c3
4 files changed, 16 insertions, 2 deletions
diff --git a/hw/boards.h b/hw/boards.h
index 22ac3326f4..e6dd1987f5 100644
--- a/hw/boards.h
+++ b/hw/boards.h
@@ -16,6 +16,7 @@ typedef struct QEMUMachine {
QEMUMachineInitFunc *init;
#define RAMSIZE_FIXED (1 << 0)
ram_addr_t ram_require;
+ int nodisk_ok;
struct QEMUMachine *next;
} QEMUMachine;
diff --git a/hw/sun4m.c b/hw/sun4m.c
index adc62b010f..33abf0101c 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -1242,6 +1242,7 @@ QEMUMachine ss5_machine = {
.desc = "Sun4m platform, SPARCstation 5",
.init = ss5_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss10_machine = {
@@ -1249,6 +1250,7 @@ QEMUMachine ss10_machine = {
.desc = "Sun4m platform, SPARCstation 10",
.init = ss10_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss600mp_machine = {
@@ -1256,6 +1258,7 @@ QEMUMachine ss600mp_machine = {
.desc = "Sun4m platform, SPARCserver 600MP",
.init = ss600mp_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss20_machine = {
@@ -1263,6 +1266,7 @@ QEMUMachine ss20_machine = {
.desc = "Sun4m platform, SPARCstation 20",
.init = ss20_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss2_machine = {
@@ -1270,6 +1274,7 @@ QEMUMachine ss2_machine = {
.desc = "Sun4c platform, SPARCstation 2",
.init = ss2_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine voyager_machine = {
@@ -1277,6 +1282,7 @@ QEMUMachine voyager_machine = {
.desc = "Sun4m platform, SPARCstation Voyager",
.init = vger_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss_lx_machine = {
@@ -1284,6 +1290,7 @@ QEMUMachine ss_lx_machine = {
.desc = "Sun4m platform, SPARCstation LX",
.init = ss_lx_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss4_machine = {
@@ -1291,6 +1298,7 @@ QEMUMachine ss4_machine = {
.desc = "Sun4m platform, SPARCstation 4",
.init = ss4_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine scls_machine = {
@@ -1298,6 +1306,7 @@ QEMUMachine scls_machine = {
.desc = "Sun4m platform, SPARCClassic",
.init = scls_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine sbook_machine = {
@@ -1305,6 +1314,7 @@ QEMUMachine sbook_machine = {
.desc = "Sun4m platform, SPARCbook",
.init = sbook_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
static const struct sun4d_hwdef sun4d_hwdefs[] = {
@@ -1542,6 +1552,7 @@ QEMUMachine ss1000_machine = {
.desc = "Sun4d platform, SPARCserver 1000",
.init = ss1000_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine ss2000_machine = {
@@ -1549,4 +1560,5 @@ QEMUMachine ss2000_machine = {
.desc = "Sun4d platform, SPARCcenter 2000",
.init = ss2000_init,
.ram_require = PROM_SIZE_MAX + TCX_SIZE,
+ .nodisk_ok = 1,
};
diff --git a/hw/sun4u.c b/hw/sun4u.c
index d8cc2d6a6c..71b5c792e4 100644
--- a/hw/sun4u.c
+++ b/hw/sun4u.c
@@ -450,6 +450,7 @@ QEMUMachine sun4u_machine = {
.desc = "Sun4u platform",
.init = sun4u_init,
.ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
+ .nodisk_ok = 1,
};
QEMUMachine sun4v_machine = {
@@ -457,4 +458,5 @@ QEMUMachine sun4v_machine = {
.desc = "Sun4v platform",
.init = sun4v_init,
.ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
+ .nodisk_ok = 1,
};
diff --git a/vl.c b/vl.c
index e42ae6442d..6ade2ad165 100644
--- a/vl.c
+++ b/vl.c
@@ -8879,9 +8879,8 @@ int main(int argc, char **argv)
linux_boot = (kernel_filename != NULL);
net_boot = (boot_devices_bitmap >> ('n' - 'a')) & 0xF;
- /* XXX: this should not be: some embedded targets just have flash */
if (!linux_boot && net_boot == 0 &&
- nb_drives_opt == 0)
+ !machine->nodisk_ok && nb_drives_opt == 0)
help(1);
if (!linux_boot && *kernel_cmdline != '\0') {