mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
io port API change
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@664 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
c4b1fcc0f9
commit
b41a2cd1e4
7 changed files with 192 additions and 157 deletions
36
hw/pckbd.c
36
hw/pckbd.c
|
@ -189,7 +189,7 @@ static void kbd_update_irq(KBDState *s)
|
|||
|
||||
static void kbd_queue(KBDState *s, int b, int aux)
|
||||
{
|
||||
KBDQueue *q = &kbd_state.queues[aux];
|
||||
KBDQueue *q = &s->queues[aux];
|
||||
|
||||
#if defined(DEBUG_MOUSE) || defined(DEBUG_KBD)
|
||||
if (aux)
|
||||
|
@ -214,9 +214,9 @@ void kbd_put_keycode(int keycode)
|
|||
kbd_queue(s, keycode, 0);
|
||||
}
|
||||
|
||||
static uint32_t kbd_read_status(CPUState *env, uint32_t addr)
|
||||
static uint32_t kbd_read_status(void *opaque, uint32_t addr)
|
||||
{
|
||||
KBDState *s = &kbd_state;
|
||||
KBDState *s = opaque;
|
||||
int val;
|
||||
val = s->status;
|
||||
#if defined(DEBUG_KBD)
|
||||
|
@ -225,9 +225,9 @@ static uint32_t kbd_read_status(CPUState *env, uint32_t addr)
|
|||
return val;
|
||||
}
|
||||
|
||||
static void kbd_write_command(CPUState *env, uint32_t addr, uint32_t val)
|
||||
static void kbd_write_command(void *opaque, uint32_t addr, uint32_t val)
|
||||
{
|
||||
KBDState *s = &kbd_state;
|
||||
KBDState *s = opaque;
|
||||
|
||||
#ifdef DEBUG_KBD
|
||||
printf("kbd: write cmd=0x%02x\n", val);
|
||||
|
@ -285,10 +285,10 @@ static void kbd_write_command(CPUState *env, uint32_t addr, uint32_t val)
|
|||
break;
|
||||
#ifdef TARGET_I386
|
||||
case KBD_CCMD_ENABLE_A20:
|
||||
cpu_x86_set_a20(env, 1);
|
||||
cpu_x86_set_a20(cpu_single_env, 1);
|
||||
break;
|
||||
case KBD_CCMD_DISABLE_A20:
|
||||
cpu_x86_set_a20(env, 0);
|
||||
cpu_x86_set_a20(cpu_single_env, 0);
|
||||
break;
|
||||
#endif
|
||||
case KBD_CCMD_RESET:
|
||||
|
@ -304,9 +304,9 @@ static void kbd_write_command(CPUState *env, uint32_t addr, uint32_t val)
|
|||
}
|
||||
}
|
||||
|
||||
static uint32_t kbd_read_data(CPUState *env, uint32_t addr)
|
||||
static uint32_t kbd_read_data(void *opaque, uint32_t addr)
|
||||
{
|
||||
KBDState *s = &kbd_state;
|
||||
KBDState *s = opaque;
|
||||
KBDQueue *q;
|
||||
int val, index;
|
||||
|
||||
|
@ -605,9 +605,9 @@ static void kbd_write_mouse(KBDState *s, int val)
|
|||
}
|
||||
}
|
||||
|
||||
void kbd_write_data(CPUState *env, uint32_t addr, uint32_t val)
|
||||
void kbd_write_data(void *opaque, uint32_t addr, uint32_t val)
|
||||
{
|
||||
KBDState *s = &kbd_state;
|
||||
KBDState *s = opaque;
|
||||
|
||||
#ifdef DEBUG_KBD
|
||||
printf("kbd: write data=0x%02x\n", val);
|
||||
|
@ -629,7 +629,7 @@ void kbd_write_data(CPUState *env, uint32_t addr, uint32_t val)
|
|||
break;
|
||||
case KBD_CCMD_WRITE_OUTPORT:
|
||||
#ifdef TARGET_I386
|
||||
cpu_x86_set_a20(env, (val >> 1) & 1);
|
||||
cpu_x86_set_a20(cpu_single_env, (val >> 1) & 1);
|
||||
#endif
|
||||
if (!(val & 1)) {
|
||||
reset_requested = 1;
|
||||
|
@ -664,9 +664,11 @@ void kbd_reset(KBDState *s)
|
|||
|
||||
void kbd_init(void)
|
||||
{
|
||||
kbd_reset(&kbd_state);
|
||||
register_ioport_read(0x60, 1, kbd_read_data, 1);
|
||||
register_ioport_write(0x60, 1, kbd_write_data, 1);
|
||||
register_ioport_read(0x64, 1, kbd_read_status, 1);
|
||||
register_ioport_write(0x64, 1, kbd_write_command, 1);
|
||||
KBDState *s = &kbd_state;
|
||||
|
||||
kbd_reset(s);
|
||||
register_ioport_read(0x60, 1, 1, kbd_read_data, s);
|
||||
register_ioport_write(0x60, 1, 1, kbd_write_data, s);
|
||||
register_ioport_read(0x64, 1, 1, kbd_read_status, s);
|
||||
register_ioport_write(0x64, 1, 1, kbd_write_command, s);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue