aboutsummaryrefslogtreecommitdiff
path: root/hw/pc.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-04-05 20:26:03 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2004-04-05 20:26:03 +0000
commite1a237441dbe31873d6d9c7d9eee2f1653b5f9e8 (patch)
tree9360ccfe0274393287399fc0583f4dbb033eed70 /hw/pc.c
parent57c30724825ac4601da66562ebe56d3147275b47 (diff)
downloadqemu-e1a237441dbe31873d6d9c7d9eee2f1653b5f9e8.zip
qemu-e1a237441dbe31873d6d9c7d9eee2f1653b5f9e8.tar.gz
qemu-e1a237441dbe31873d6d9c7d9eee2f1653b5f9e8.tar.bz2
port 92 access
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@708 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/pc.c')
-rw-r--r--hw/pc.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/hw/pc.c b/hw/pc.c
index 5431a41..e62d56d 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -177,6 +177,17 @@ static uint32_t speaker_ioport_read(void *opaque, uint32_t addr)
(dummy_refresh_clock << 4);
}
+static void ioport92_write(void *opaque, uint32_t addr, uint32_t val)
+{
+ cpu_x86_set_a20(cpu_single_env, (val >> 1) & 1);
+ /* XXX: bit 0 is fast reset */
+}
+
+static uint32_t ioport92_read(void *opaque, uint32_t addr)
+{
+ return ((cpu_single_env->a20_mask >> 20) & 1) << 1;
+}
+
/***********************************************************/
/* Bochs BIOS debug ports */
@@ -355,6 +366,9 @@ void pc_init(int ram_size, int vga_ram_size, int boot_device,
register_ioport_read(0x61, 1, 1, speaker_ioport_read, NULL);
register_ioport_write(0x61, 1, 1, speaker_ioport_write, NULL);
+ register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
+ register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
+
pic_init();
pit_init(0x40, 0);