[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC 06/48] pc: Factor common code out of pc_boot_set
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH RFC 06/48] pc: Factor common code out of pc_boot_set() and cmos_init() |
Date: |
Wed, 24 Feb 2010 18:55:18 +0100 |
Code duplicated in commit 0ecdffbb. The two versions are similar, but
not identical:
* cmos_init() reports errors to stderr, pc_boot_set() via
qemu_error(). The latter is fine for both, so pick that for the
common code.
* cmos_init() obeys fd_bootchk, pc_boot_set() ignores it. Make it a
parameter of the common code.
Signed-off-by: Markus Armbruster <address@hidden>
---
hw/pc.c | 28 ++++++++--------------------
1 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index d94980b..1595283 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -230,12 +230,9 @@ static int boot_device2nibble(char boot_device)
return 0;
}
-/* copy/pasted from cmos_init, should be made a general function
- and used there as well */
-static int pc_boot_set(void *opaque, const char *boot_device)
+static int set_boot_dev(RTCState *s, const char *boot_device, int fd_bootchk)
{
#define PC_MAX_BOOT_DEVICES 3
- RTCState *s = (RTCState *)opaque;
int nbds, bds[3] = { 0, };
int i;
@@ -253,16 +250,20 @@ static int pc_boot_set(void *opaque, const char
*boot_device)
}
}
rtc_set_memory(s, 0x3d, (bds[1] << 4) | bds[0]);
- rtc_set_memory(s, 0x38, (bds[2] << 4));
+ rtc_set_memory(s, 0x38, (bds[2] << 4) | (fd_bootchk ? 0x0 : 0x1));
return(0);
}
+static int pc_boot_set(void *opaque, const char *boot_device)
+{
+ return set_boot_dev(opaque, boot_device, 0);
+}
+
/* hd_table must contain 4 block drivers */
static void cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
const char *boot_device, DriveInfo **hd_table)
{
RTCState *s = rtc_state;
- int nbds, bds[3] = { 0, };
int val;
int fd0, fd1, nb;
int i;
@@ -301,22 +302,9 @@ static void cmos_init(ram_addr_t ram_size, ram_addr_t
above_4g_mem_size,
rtc_set_memory(s, 0x5f, smp_cpus - 1);
/* set boot devices, and disable floppy signature check if requested */
-#define PC_MAX_BOOT_DEVICES 3
- nbds = strlen(boot_device);
- if (nbds > PC_MAX_BOOT_DEVICES) {
- fprintf(stderr, "Too many boot devices for PC\n");
+ if (set_boot_dev(s, boot_device, fd_bootchk)) {
exit(1);
}
- for (i = 0; i < nbds; i++) {
- bds[i] = boot_device2nibble(boot_device[i]);
- if (bds[i] == 0) {
- fprintf(stderr, "Invalid boot device for PC: '%c'\n",
- boot_device[i]);
- exit(1);
- }
- }
- rtc_set_memory(s, 0x3d, (bds[1] << 4) | bds[0]);
- rtc_set_memory(s, 0x38, (bds[2] << 4) | (fd_bootchk ? 0x0 : 0x1));
/* floppy type */
--
1.6.6
- [Qemu-devel] [PATCH RFC 42/48] error: Convert do_device_add() to QError, (continued)
- [Qemu-devel] [PATCH RFC 42/48] error: Convert do_device_add() to QError, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 48/48] monitor: convert do_device_add() to QObject, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 18/48] error: Include the program name in error messages to stderr, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 35/48] monitor: New in_qmp_mon(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 38/48] error: New QERR_BUS_NO_HOTPLUG, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 11/48] error: Move qemu_error & friends into their own header, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 09/48] block: Simplify usb_msd_initfn() test for "can read bdrv key", Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 06/48] pc: Factor common code out of pc_boot_set() and cmos_init(),
Markus Armbruster <=
- [Qemu-devel] [PATCH RFC 08/48] monitor: Separate "default monitor" and "current monitor" cleanly, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 15/48] error: Don't abuse qemu_error() for non-error in qdev_device_help(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 05/48] pc: Fix error reporting for -boot once, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 07/48] tools: Remove unused cur_mon from qemu-tool.c, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 32/48] error: New QERR_DEVICE_MULTIPLE_BUSSES, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 34/48] qdev: Convert qbus_find() to QError, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 33/48] error: New QERR_DEVICE_NO_BUS, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 14/48] error: Don't abuse qemu_error() for non-error in scsi_hot_add(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 12/48] error: New error_printf() and error_vprintf(), Markus Armbruster, 2010/02/24