Commit f88e4b91bea91beaa4f9dde28ccb4aa973c1dd4e

Authored by blueswir1
1 parent 66de733b

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
hw/boards.h
... ... @@ -16,6 +16,7 @@ typedef struct QEMUMachine {
16 16 QEMUMachineInitFunc *init;
17 17 #define RAMSIZE_FIXED (1 << 0)
18 18 ram_addr_t ram_require;
  19 + int nodisk_ok;
19 20 struct QEMUMachine *next;
20 21 } QEMUMachine;
21 22  
... ...
hw/sun4m.c
... ... @@ -1242,6 +1242,7 @@ QEMUMachine ss5_machine = {
1242 1242 .desc = "Sun4m platform, SPARCstation 5",
1243 1243 .init = ss5_init,
1244 1244 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1245 + .nodisk_ok = 1,
1245 1246 };
1246 1247  
1247 1248 QEMUMachine ss10_machine = {
... ... @@ -1249,6 +1250,7 @@ QEMUMachine ss10_machine = {
1249 1250 .desc = "Sun4m platform, SPARCstation 10",
1250 1251 .init = ss10_init,
1251 1252 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1253 + .nodisk_ok = 1,
1252 1254 };
1253 1255  
1254 1256 QEMUMachine ss600mp_machine = {
... ... @@ -1256,6 +1258,7 @@ QEMUMachine ss600mp_machine = {
1256 1258 .desc = "Sun4m platform, SPARCserver 600MP",
1257 1259 .init = ss600mp_init,
1258 1260 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1261 + .nodisk_ok = 1,
1259 1262 };
1260 1263  
1261 1264 QEMUMachine ss20_machine = {
... ... @@ -1263,6 +1266,7 @@ QEMUMachine ss20_machine = {
1263 1266 .desc = "Sun4m platform, SPARCstation 20",
1264 1267 .init = ss20_init,
1265 1268 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1269 + .nodisk_ok = 1,
1266 1270 };
1267 1271  
1268 1272 QEMUMachine ss2_machine = {
... ... @@ -1270,6 +1274,7 @@ QEMUMachine ss2_machine = {
1270 1274 .desc = "Sun4c platform, SPARCstation 2",
1271 1275 .init = ss2_init,
1272 1276 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1277 + .nodisk_ok = 1,
1273 1278 };
1274 1279  
1275 1280 QEMUMachine voyager_machine = {
... ... @@ -1277,6 +1282,7 @@ QEMUMachine voyager_machine = {
1277 1282 .desc = "Sun4m platform, SPARCstation Voyager",
1278 1283 .init = vger_init,
1279 1284 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1285 + .nodisk_ok = 1,
1280 1286 };
1281 1287  
1282 1288 QEMUMachine ss_lx_machine = {
... ... @@ -1284,6 +1290,7 @@ QEMUMachine ss_lx_machine = {
1284 1290 .desc = "Sun4m platform, SPARCstation LX",
1285 1291 .init = ss_lx_init,
1286 1292 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1293 + .nodisk_ok = 1,
1287 1294 };
1288 1295  
1289 1296 QEMUMachine ss4_machine = {
... ... @@ -1291,6 +1298,7 @@ QEMUMachine ss4_machine = {
1291 1298 .desc = "Sun4m platform, SPARCstation 4",
1292 1299 .init = ss4_init,
1293 1300 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1301 + .nodisk_ok = 1,
1294 1302 };
1295 1303  
1296 1304 QEMUMachine scls_machine = {
... ... @@ -1298,6 +1306,7 @@ QEMUMachine scls_machine = {
1298 1306 .desc = "Sun4m platform, SPARCClassic",
1299 1307 .init = scls_init,
1300 1308 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1309 + .nodisk_ok = 1,
1301 1310 };
1302 1311  
1303 1312 QEMUMachine sbook_machine = {
... ... @@ -1305,6 +1314,7 @@ QEMUMachine sbook_machine = {
1305 1314 .desc = "Sun4m platform, SPARCbook",
1306 1315 .init = sbook_init,
1307 1316 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1317 + .nodisk_ok = 1,
1308 1318 };
1309 1319  
1310 1320 static const struct sun4d_hwdef sun4d_hwdefs[] = {
... ... @@ -1542,6 +1552,7 @@ QEMUMachine ss1000_machine = {
1542 1552 .desc = "Sun4d platform, SPARCserver 1000",
1543 1553 .init = ss1000_init,
1544 1554 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1555 + .nodisk_ok = 1,
1545 1556 };
1546 1557  
1547 1558 QEMUMachine ss2000_machine = {
... ... @@ -1549,4 +1560,5 @@ QEMUMachine ss2000_machine = {
1549 1560 .desc = "Sun4d platform, SPARCcenter 2000",
1550 1561 .init = ss2000_init,
1551 1562 .ram_require = PROM_SIZE_MAX + TCX_SIZE,
  1563 + .nodisk_ok = 1,
1552 1564 };
... ...
hw/sun4u.c
... ... @@ -450,6 +450,7 @@ QEMUMachine sun4u_machine = {
450 450 .desc = "Sun4u platform",
451 451 .init = sun4u_init,
452 452 .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
  453 + .nodisk_ok = 1,
453 454 };
454 455  
455 456 QEMUMachine sun4v_machine = {
... ... @@ -457,4 +458,5 @@ QEMUMachine sun4v_machine = {
457 458 .desc = "Sun4v platform",
458 459 .init = sun4v_init,
459 460 .ram_require = PROM_SIZE_MAX + VGA_RAM_SIZE,
  461 + .nodisk_ok = 1,
460 462 };
... ...
... ... @@ -8879,9 +8879,8 @@ int main(int argc, char **argv)
8879 8879 linux_boot = (kernel_filename != NULL);
8880 8880 net_boot = (boot_devices_bitmap >> ('n' - 'a')) & 0xF;
8881 8881  
8882   - /* XXX: this should not be: some embedded targets just have flash */
8883 8882 if (!linux_boot && net_boot == 0 &&
8884   - nb_drives_opt == 0)
  8883 + !machine->nodisk_ok && nb_drives_opt == 0)
8885 8884 help(1);
8886 8885  
8887 8886 if (!linux_boot && *kernel_cmdline != '\0') {
... ...