aboutsummaryrefslogtreecommitdiff
path: root/sim/txvu/vu1.c
diff options
context:
space:
mode:
Diffstat (limited to 'sim/txvu/vu1.c')
-rw-r--r--sim/txvu/vu1.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/sim/txvu/vu1.c b/sim/txvu/vu1.c
new file mode 100644
index 0000000..049edd3
--- /dev/null
+++ b/sim/txvu/vu1.c
@@ -0,0 +1,85 @@
+/* Copyright (C) 1998, Cygnus Solutions
+
+ */
+
+#include "sim-main.h"
+
+#include "device.h"
+#include "vu1.h"
+
+static char vu1_mem0_buffer[VU1_MEM0_SIZE];
+static char vu1_mem1_buffer[VU1_MEM1_SIZE];
+
+int
+vu1_io_read_buffer(device *me,
+ void *dest,
+ int space,
+ address_word addr,
+ unsigned nr_bytes,
+ sim_cpu *processor,
+ sim_cia cia)
+{
+ printf("%s: Read!\n", me->name);
+
+printf(" vu1_mem0[0] = %d\n", *(int*)&vu1_mem0_buffer[0]);
+printf(" vu1_mem1[0] = %d\n", *(int*)&vu1_mem1_buffer[0]);
+
+ return nr_bytes;
+}
+
+int
+vu1_io_write_buffer(device *me,
+ const void *source,
+ int space,
+ address_word addr,
+ unsigned nr_bytes,
+ sim_cpu *processor,
+ sim_cia cia)
+{
+ printf("%s: Write!\n", me->name);
+ return nr_bytes;
+}
+
+device vu1_device =
+ {
+ "vu1",
+ &vu1_io_read_buffer,
+ &vu1_io_write_buffer
+ };
+
+void
+vu1_attach(SIM_DESC sd)
+{
+ sim_core_attach (sd,
+ NULL,
+ 0 /*level*/,
+ access_read_write,
+ 0 /*space ???*/,
+ VU1_REGISTER_WINDOW_START,
+ VU1_REGISTER_WINDOW_SIZE /*nr_bytes*/,
+ 0 /*modulo*/,
+ &vu1_device,
+ NULL /*buffer*/);
+
+ sim_core_attach (sd,
+ NULL,
+ 0 /*level*/,
+ access_read_write,
+ 0 /*space ???*/,
+ VU1_MEM0_WINDOW_START,
+ VU1_MEM0_SIZE /*nr_bytes*/,
+ 0 /*modulo*/,
+ 0 /*device*/,
+ &vu1_mem0_buffer /*buffer*/);
+
+ sim_core_attach (sd,
+ NULL,
+ 0 /*level*/,
+ access_read_write,
+ 0 /*space ???*/,
+ VU1_MEM1_WINDOW_START,
+ VU1_MEM1_SIZE /*nr_bytes*/,
+ 0 /*modulo*/,
+ 0 /*device*/,
+ &vu1_mem1_buffer /*buffer*/);
+}