diff --git a/am/arch/riscv64-xs-dual.mk b/am/arch/riscv64-xs-dual.mk index d0e11874..9fdcd2e2 100644 --- a/am/arch/riscv64-xs-dual.mk +++ b/am/arch/riscv64-xs-dual.mk @@ -9,11 +9,9 @@ AM_SRCS := noop/isa/riscv/trm.c \ nemu/isa/riscv/cte64.c \ nemu/isa/riscv/mtime.S \ nemu/isa/riscv/vme.c \ - nemu/common/ioe.c \ + xs/common/ioe.c \ noop/common/input.c \ noop/common/timer.c \ - nemu/common/video.c \ - dummy/audio.c \ noop/isa/riscv/instr.c \ xs/isa/riscv/mpe.c \ xs/isa/riscv/clint.c \ diff --git a/am/arch/riscv64-xs-flash.mk b/am/arch/riscv64-xs-flash.mk index 270e2e0e..2131a606 100644 --- a/am/arch/riscv64-xs-flash.mk +++ b/am/arch/riscv64-xs-flash.mk @@ -6,11 +6,9 @@ AM_SRCS := noop/isa/riscv/trm_flash.c \ noop/common/uartlite.c \ nemu/isa/riscv/trap.S \ nemu/isa/riscv/vme.c \ - nemu/common/ioe.c \ + xs/common/ioe.c \ noop/common/input.c \ noop/common/timer.c \ - nemu/common/video.c \ - dummy/audio.c \ noop/isa/riscv/instr.c \ xs/isa/riscv/mpe.c \ xs/isa/riscv/clint.c \ diff --git a/am/arch/riscv64-xs.mk b/am/arch/riscv64-xs.mk index 1f96d6c9..93f0f7f4 100644 --- a/am/arch/riscv64-xs.mk +++ b/am/arch/riscv64-xs.mk @@ -9,11 +9,9 @@ AM_SRCS := noop/isa/riscv/trm.c \ nemu/isa/riscv/cte64.c \ nemu/isa/riscv/mtime.S \ nemu/isa/riscv/vme.c \ - nemu/common/ioe.c \ + xs/common/ioe.c \ noop/common/input.c \ noop/common/timer.c \ - nemu/common/video.c \ - dummy/audio.c \ noop/isa/riscv/instr.c \ xs/isa/riscv/mpe.c \ xs/isa/riscv/clint.c \ diff --git a/am/src/xs/common/ioe.c b/am/src/xs/common/ioe.c new file mode 100644 index 00000000..566bdf2d --- /dev/null +++ b/am/src/xs/common/ioe.c @@ -0,0 +1,26 @@ +#include +#include + +void __am_timer_init(); + +int _ioe_init() { + __am_timer_init(); + return 0; +} + +size_t __am_timer_read(uintptr_t reg, void *buf, size_t size); +size_t __am_input_read(uintptr_t reg, void *buf, size_t size); + +size_t _io_read(uint32_t dev, uintptr_t reg, void *buf, size_t size) { + switch (dev) { + case _DEV_INPUT: return __am_input_read(reg, buf, size); + case _DEV_TIMER: return __am_timer_read(reg, buf, size); + } + return 0; +} + +size_t _io_write(uint32_t dev, uintptr_t reg, void *buf, size_t size) { + switch (dev) { + } + return 0; +}