1e1e3b618f
* *Modified Files: * .Sanitize ChangeLog *Added Files: * Makefile.in README.Cygnus config.in configure configure.in * device.c device.h dma.c dma.h engine-sky.c gencode.c gpuif.c * gpuif.h hardware.c hardware.h interp.c m16.igen mdmx.igen * mips.dc mips.igen pke0.c pke0.h pke1.c pke1.h r5900.igen * sim-main.h tconfig.in vr5400.igen vu0.c vu0.h vu1.c vu1.h
71 lines
1.5 KiB
C
71 lines
1.5 KiB
C
/* Copyright (C) 1998, Cygnus Solutions
|
|
|
|
*/
|
|
|
|
#include "sim-main.h"
|
|
|
|
#include "device.h"
|
|
#include "dma.h"
|
|
|
|
int
|
|
dma_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);
|
|
return nr_bytes;
|
|
}
|
|
|
|
static sim_event_handler do_the_dma_thing_handler;
|
|
|
|
int
|
|
dma_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);
|
|
|
|
/* Do an event before the next instruction! */
|
|
sim_events_schedule (CPU_STATE(processor),
|
|
0 /*time*/,
|
|
do_the_dma_thing_handler,
|
|
CPU_STATE(processor) /*data*/);
|
|
return nr_bytes;
|
|
}
|
|
|
|
device dma_device =
|
|
{
|
|
"Dma Controller",
|
|
&dma_io_read_buffer,
|
|
&dma_io_write_buffer
|
|
};
|
|
|
|
void
|
|
dma_attach(SIM_DESC sd)
|
|
{
|
|
sim_core_attach (sd,
|
|
NULL,
|
|
0 /*level*/,
|
|
access_read_write,
|
|
0 /*space ???*/,
|
|
DMA_REGISTER_WINDOW_START,
|
|
DMA_REGISTER_WINDOW_SIZE /*nr_bytes*/,
|
|
0 /*modulo*/,
|
|
&dma_device,
|
|
NULL /*buffer*/);
|
|
}
|
|
|
|
static void
|
|
do_the_dma_thing_handler(SIM_DESC sd, void *data)
|
|
{
|
|
printf("Dma Event!!!\n");
|
|
}
|