Line 59... |
Line 59... |
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
int
|
int
|
or1ksim_init (const char *config_file,
|
or1ksim_init (const char *config_file,
|
const char *image_file,
|
const char *image_file,
|
void *class_ptr,
|
void *class_ptr,
|
unsigned long int (*upr) (void *class_ptr,
|
int (*upr) (void *class_ptr,
|
unsigned long int addr,
|
unsigned long int addr,
|
unsigned long int mask),
|
unsigned char mask[],
|
void (*upw) (void *class_ptr,
|
unsigned char rdata[],
|
|
int data_len),
|
|
int (*upw) (void *class_ptr,
|
unsigned long int addr,
|
unsigned long int addr,
|
unsigned long int mask, unsigned long int wdata))
|
unsigned char mask[],
|
|
unsigned char wdata[],
|
|
int data_len))
|
{
|
{
|
int dummy_argc;
|
int dummy_argc;
|
char *dummy_argv[4];
|
char *dummy_argv[4];
|
|
|
/* Dummy argv array. Varies depending on whether an image file is
|
/* Dummy argv array. Varies depending on whether an image file is
|
Line 320... |
Line 324... |
or1ksim_interrupt (int i)
|
or1ksim_interrupt (int i)
|
{
|
{
|
if (!config.pic.edge_trigger)
|
if (!config.pic.edge_trigger)
|
{
|
{
|
fprintf (stderr, "Warning: or1ksim_interrupt should not be used for "
|
fprintf (stderr, "Warning: or1ksim_interrupt should not be used for "
|
"edge triggered interrupts. Ignored\n");
|
"level triggered interrupts. Ignored\n");
|
}
|
}
|
else
|
else
|
{
|
{
|
runtime.sim.ext_int_set |= 1 << i; // Better not be > 31!
|
runtime.sim.ext_int_set |= 1 << i; // Better not be > 31!
|
runtime.sim.ext_int_clr |= 1 << i; // Better not be > 31!
|
runtime.sim.ext_int_clr |= 1 << i; // Better not be > 31!
|
Line 347... |
Line 351... |
or1ksim_interrupt_set (int i)
|
or1ksim_interrupt_set (int i)
|
{
|
{
|
if (config.pic.edge_trigger)
|
if (config.pic.edge_trigger)
|
{
|
{
|
fprintf (stderr, "Warning: or1ksim_interrupt_set should not be used for "
|
fprintf (stderr, "Warning: or1ksim_interrupt_set should not be used for "
|
"level triggered interrupts. Ignored\n");
|
"edge triggered interrupts. Ignored\n");
|
}
|
}
|
else
|
else
|
{
|
{
|
runtime.sim.ext_int_set |= 1 << i; // Better not be > 31!
|
runtime.sim.ext_int_set |= 1 << i; // Better not be > 31!
|
}
|
}
|
Line 373... |
Line 377... |
or1ksim_interrupt_clear (int i)
|
or1ksim_interrupt_clear (int i)
|
{
|
{
|
if (config.pic.edge_trigger)
|
if (config.pic.edge_trigger)
|
{
|
{
|
fprintf (stderr, "Warning: or1ksim_interrupt_clear should not be used "
|
fprintf (stderr, "Warning: or1ksim_interrupt_clear should not be used "
|
"for level triggered interrupts. Ignored\n");
|
"for edge triggered interrupts. Ignored\n");
|
}
|
}
|
else
|
else
|
{
|
{
|
runtime.sim.ext_int_clr |= 1 << i; // Better not be > 31!
|
runtime.sim.ext_int_clr |= 1 << i; // Better not be > 31!
|
}
|
}
|