Update TODO list.
Improve comments in boot.c.
Use debug port 0x0402 instead of 0x0403 (bochs prefers the latter).
Fix formatting of debug messages in kbd.c.
Use proper return check for kbd and mouse init.
Fix keyboard LEDs.
+Improve option rom handling. A real bios can copy the option roms
+from PCI space. Also, there is no handling for BCVs today.
+
+Clean up and clarify usage/scope of .bss and .data variables.
+
Review changes committed to coreboot, virtualbox, qemu, kvm, and bochs
cvs tip.
* bochs cvs (1.209) -- all changes synched
See if it is possible to handle interrupts while in 32bit mode.
+Add a kconfig style configuration program instead of requiring users
+to modify config.h.
+
Look at integrating the lgpl vgabios into tree.
Look at usb booting specs. Look at possibly supporting usb
-// 16bit code to load disk image and start system boot.
+// Code to load disk image and start system boot.
//
// Copyright (C) 2008 Kevin O'Connor <kevin@koconnor.net>
// Copyright (C) 2002 MandrakeSoft S.A.
u8 bootdrv = 0;
struct bregs cr;
switch(type) {
- case IPL_TYPE_FLOPPY: /* FDD */
- case IPL_TYPE_HARDDISK: /* HDD */
+ case IPL_TYPE_FLOPPY:
+ case IPL_TYPE_HARDDISK:
bootdrv = (type == IPL_TYPE_HARDDISK) ? 0x80 : 0x00;
bootseg = 0x07c0;
}
// Ughh - some older gcc compilers have a bug which causes VISIBLE32
-// functions to not be exported as a global variables.
+// functions to not be exported as global variables.
asm(".global handle_18, handle_19");
#define PORT_FD_DIR 0x03f7
#define PORT_PCI_CMD 0x0cf8
#define PORT_PCI_DATA 0x0cfc
-#define PORT_BIOS_DEBUG 0x0403
+#define PORT_BIOS_DEBUG 0x0402
#define PORT_BIOS_APM 0x8900
// PORT_KBD_CTRLB bitdefs
if (ret)
return;
if (param[0] != 0x55) {
- dprintf(1, "i8042 self test failed (got %x not 0x55\n", param[0]);
+ dprintf(1, "i8042 self test failed (got %x not 0x55)\n", param[0]);
return;
}
if (ret)
return;
if (param[0] != 0x00) {
- dprintf(1, "i8042 keyboard test failed (got %x not 0x00\n", param[0]);
+ dprintf(1, "i8042 keyboard test failed (got %x not 0x00)\n", param[0]);
return;
}
/* ------------------- keyboard side ------------------------*/
/* reset keyboard and self test (keyboard side) */
ret = kbd_command(ATKBD_CMD_RESET_BAT, param);
- if (ret < 0)
+ if (ret != 0 && ret != 2)
return;
if (param[0] != 0xaa) {
- dprintf(1, "keyboard self test failed (got %x not 0xaa\n", param[0]);
+ dprintf(1, "keyboard self test failed (got %x not 0xaa)\n", param[0]);
return;
}
{
u8 param[2];
int ret = aux_command(PSMOUSE_CMD_RESET_BAT, param);
- if (ret < 0) {
+ if (ret != 0 && ret != 2) {
set_code_fail(regs, RET_ENEEDRESEND);
return;
}