Revision 1f5476fc
b/vl.c | ||
---|---|---|
2594 | 2594 |
#define KBD_CCMD_WRITE_AUX_OBUF 0xD3 /* Write to output buffer as if |
2595 | 2595 |
initiated by the auxiliary device */ |
2596 | 2596 |
#define KBD_CCMD_WRITE_MOUSE 0xD4 /* Write the following byte to the mouse */ |
2597 |
#define KBD_CCMD_ENABLE_A20 0xDD
|
|
2598 |
#define KBD_CCMD_DISABLE_A20 0xDF
|
|
2597 |
#define KBD_CCMD_DISABLE_A20 0xDD /* HP vectra only ? */
|
|
2598 |
#define KBD_CCMD_ENABLE_A20 0xDF /* HP vectra only ? */
|
|
2599 | 2599 |
#define KBD_CCMD_RESET 0xFE |
2600 | 2600 |
|
2601 | 2601 |
/* Keyboard Commands */ |
... | ... | |
2685 | 2685 |
|
2686 | 2686 |
KBDState kbd_state; |
2687 | 2687 |
int reset_requested; |
2688 |
int a20_enabled; |
|
2689 | 2688 |
|
2690 | 2689 |
/* update irq and KBD_STAT_[MOUSE_]OBF */ |
2691 | 2690 |
static void kbd_update_irq(KBDState *s) |
... | ... | |
2802 | 2801 |
kbd_queue(s, val, 0); |
2803 | 2802 |
break; |
2804 | 2803 |
case KBD_CCMD_ENABLE_A20: |
2805 |
a20_enabled = 1;
|
|
2804 |
cpu_x86_set_a20(env, 1);
|
|
2806 | 2805 |
break; |
2807 | 2806 |
case KBD_CCMD_DISABLE_A20: |
2808 |
a20_enabled = 0;
|
|
2807 |
cpu_x86_set_a20(env, 0);
|
|
2809 | 2808 |
break; |
2810 | 2809 |
case KBD_CCMD_RESET: |
2811 | 2810 |
reset_requested = 1; |
... | ... | |
2875 | 2874 |
case KBD_CMD_SET_LEDS: |
2876 | 2875 |
case KBD_CMD_SET_RATE: |
2877 | 2876 |
s->kbd_write_cmd = val; |
2877 |
kbd_queue(s, KBD_REPLY_ACK, 0); |
|
2878 | 2878 |
break; |
2879 | 2879 |
case KBD_CMD_RESET_DISABLE: |
2880 | 2880 |
kbd_reset_keyboard(s); |
... | ... | |
3129 | 3129 |
kbd_queue(s, val, 1); |
3130 | 3130 |
break; |
3131 | 3131 |
case KBD_CCMD_WRITE_OUTPORT: |
3132 |
a20_enabled = (val >> 1) & 1;
|
|
3132 |
cpu_x86_set_a20(env, (val >> 1) & 1);
|
|
3133 | 3133 |
if (!(val & 1)) { |
3134 | 3134 |
reset_requested = 1; |
3135 | 3135 |
cpu_x86_interrupt(global_env, CPU_INTERRUPT_EXIT); |
Also available in: Unified diff