From fed4ac225df661fd5fd97738d9156b56645e98c7 Mon Sep 17 00:00:00 2001 From: xinyangli Date: Fri, 26 Jul 2024 13:44:52 +0800 Subject: [PATCH] abstract-machine,nemu: add keyboard support --- abstract-machine/am/src/platform/nemu/ioe/input.c | 5 +++-- nemu/src/cpu/cpu-exec.c | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/abstract-machine/am/src/platform/nemu/ioe/input.c b/abstract-machine/am/src/platform/nemu/ioe/input.c index 9cecca2..f868d79 100644 --- a/abstract-machine/am/src/platform/nemu/ioe/input.c +++ b/abstract-machine/am/src/platform/nemu/ioe/input.c @@ -4,6 +4,7 @@ #define KEYDOWN_MASK 0x8000 void __am_input_keybrd(AM_INPUT_KEYBRD_T *kbd) { - kbd->keydown = 0; - kbd->keycode = AM_KEY_NONE; + uint32_t keycode = inl(KBD_ADDR); + kbd->keydown = ((keycode & KEYDOWN_MASK) != 0); + kbd->keycode = keycode & (~KEYDOWN_MASK); } diff --git a/nemu/src/cpu/cpu-exec.c b/nemu/src/cpu/cpu-exec.c index 49d2b6f..312451a 100644 --- a/nemu/src/cpu/cpu-exec.c +++ b/nemu/src/cpu/cpu-exec.c @@ -176,6 +176,7 @@ breakpoint_t *cpu_exec_with_bp(uint64_t n, breakpoint_t *bp, size_t len) { } exec_once(&s, cpu.pc); g_nr_guest_inst++; + IFDEF(CONFIG_DEVICE, device_update()); if (nemu_state.state != NEMU_RUNNING) return NULL; } while (--n);