mirror of https://github.com/xemu-project/xemu.git
new reset API - shutdown support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@939 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
d7d02e3c3a
commit
a2f659ee48
16
hw/pc.c
16
hw/pc.c
|
@ -217,6 +217,9 @@ static uint32_t ioport92_read(void *opaque, uint32_t addr)
|
||||||
|
|
||||||
void bochs_bios_write(void *opaque, uint32_t addr, uint32_t val)
|
void bochs_bios_write(void *opaque, uint32_t addr, uint32_t val)
|
||||||
{
|
{
|
||||||
|
static const char shutdown_str[8] = "Shutdown";
|
||||||
|
static int shutdown_index = 0;
|
||||||
|
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
/* Bochs BIOS messages */
|
/* Bochs BIOS messages */
|
||||||
case 0x400:
|
case 0x400:
|
||||||
|
@ -229,6 +232,18 @@ void bochs_bios_write(void *opaque, uint32_t addr, uint32_t val)
|
||||||
fprintf(stderr, "%c", val);
|
fprintf(stderr, "%c", val);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
case 0x8900:
|
||||||
|
/* same as Bochs power off */
|
||||||
|
if (val == shutdown_str[shutdown_index]) {
|
||||||
|
shutdown_index++;
|
||||||
|
if (shutdown_index == 8) {
|
||||||
|
shutdown_index = 0;
|
||||||
|
qemu_system_shutdown_request();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
shutdown_index = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
/* LGPL'ed VGA BIOS messages */
|
/* LGPL'ed VGA BIOS messages */
|
||||||
case 0x501:
|
case 0x501:
|
||||||
|
@ -250,6 +265,7 @@ void bochs_bios_init(void)
|
||||||
register_ioport_write(0x401, 1, 2, bochs_bios_write, NULL);
|
register_ioport_write(0x401, 1, 2, bochs_bios_write, NULL);
|
||||||
register_ioport_write(0x402, 1, 1, bochs_bios_write, NULL);
|
register_ioport_write(0x402, 1, 1, bochs_bios_write, NULL);
|
||||||
register_ioport_write(0x403, 1, 1, bochs_bios_write, NULL);
|
register_ioport_write(0x403, 1, 1, bochs_bios_write, NULL);
|
||||||
|
register_ioport_write(0x8900, 1, 1, bochs_bios_write, NULL);
|
||||||
|
|
||||||
register_ioport_write(0x501, 1, 2, bochs_bios_write, NULL);
|
register_ioport_write(0x501, 1, 2, bochs_bios_write, NULL);
|
||||||
register_ioport_write(0x502, 1, 2, bochs_bios_write, NULL);
|
register_ioport_write(0x502, 1, 2, bochs_bios_write, NULL);
|
||||||
|
|
Loading…
Reference in New Issue