X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=hw%2Fpc.c;h=eef120e0eecbcacd58ba0ebdb44f051662afd776;hb=ee22c2f7dbcc59d9b0c0c9e08fafc9c4759b37fc;hp=75a590bfbb9aba1bca154d758d62f1d026f46dc8;hpb=28ab0e2edb36685da7280b24e665962754d9e4ff;p=qemu diff --git a/hw/pc.c b/hw/pc.c index 75a590b..eef120e 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -76,6 +76,30 @@ static inline int to_bcd(RTCState *s, int a) return ((a / 10) << 4) | (a % 10); } +static int cmos_get_fd_drive_type(int fd0) +{ + int val; + + switch (fd0) { + case 0: + /* 1.44 Mb 3"5 drive */ + val = 4; + break; + case 1: + /* 2.88 Mb 3"5 drive */ + val = 5; + break; + case 2: + /* 1.2 Mb 5"5 drive */ + val = 2; + break; + default: + val = 0; + break; + } + return val; +} + static void cmos_init(int ram_size, int boot_device) { RTCState *s = rtc_state; @@ -86,7 +110,10 @@ static void cmos_init(int ram_size, int boot_device) /* set the CMOS date */ time(&ti); - tm = gmtime(&ti); + if (rtc_utc) + tm = gmtime(&ti); + else + tm = localtime(&ti); rtc_set_date(s, tm); val = to_bcd(s, (tm->tm_year / 100) + 19); @@ -133,35 +160,7 @@ static void cmos_init(int ram_size, int boot_device) fd0 = fdctrl_get_drive_type(floppy_controller, 0); fd1 = fdctrl_get_drive_type(floppy_controller, 1); - val = 0; - switch (fd0) { - case 0: - /* 1.44 Mb 3"5 drive */ - val |= 0x40; - break; - case 1: - /* 2.88 Mb 3"5 drive */ - val |= 0x60; - break; - case 2: - /* 1.2 Mb 5"5 drive */ - val |= 0x20; - break; - } - switch (fd1) { - case 0: - /* 1.44 Mb 3"5 drive */ - val |= 0x04; - break; - case 1: - /* 2.88 Mb 3"5 drive */ - val |= 0x06; - break; - case 2: - /* 1.2 Mb 5"5 drive */ - val |= 0x02; - break; - } + val = (cmos_get_fd_drive_type(fd0) << 4) | cmos_get_fd_drive_type(fd1); rtc_set_memory(s, 0x10, val); val = 0; @@ -417,7 +416,7 @@ void pc_init(int ram_size, int vga_ram_size, int boot_device, for(i = 0; i < nb_nics; i++) { pci_ne2000_init(&nd_table[i]); } - pci_ide_init(bs_table); + pci_piix3_ide_init(bs_table); } else { nb_nics1 = nb_nics; if (nb_nics1 > NE2000_NB_MAX)