25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: dev_sii.c,v 1.19 2007/01/05 15:20:06 debug Exp $ |
* $Id: dev_sii.c,v 1.21 2007/06/15 19:57:34 debug Exp $ |
29 |
* |
* |
30 |
* SII SCSI controller, used in some DECstation systems. |
* COMMENT: SII SCSI controller, used in some DECstation systems |
31 |
* |
* |
32 |
* TODO: This is huge and ugly. Fix this. |
* TODO: This is huge and ugly. Fix this. |
33 |
*/ |
*/ |
93 |
} |
} |
94 |
|
|
95 |
|
|
96 |
/* |
DEVICE_TICK(sii) |
|
* dev_sii_tick(): |
|
|
*/ |
|
|
void dev_sii_tick(struct cpu *cpu, void *extra) |
|
97 |
{ |
{ |
98 |
struct sii_data *d = extra; |
struct sii_data *d = extra; |
99 |
|
|
439 |
} |
} |
440 |
|
|
441 |
|
|
|
/* |
|
|
* dev_sii_init(): |
|
|
*/ |
|
442 |
void dev_sii_init(struct machine *machine, struct memory *mem, |
void dev_sii_init(struct machine *machine, struct memory *mem, |
443 |
uint64_t baseaddr, uint64_t buf_start, uint64_t buf_end, |
uint64_t baseaddr, uint64_t buf_start, uint64_t buf_end, |
444 |
char *irq_path) |
char *irq_path) |
445 |
{ |
{ |
446 |
struct sii_data *d = malloc(sizeof(struct sii_data)); |
struct sii_data *d; |
|
if (d == NULL) { |
|
|
fprintf(stderr, "out of memory\n"); |
|
|
exit(1); |
|
|
} |
|
447 |
|
|
448 |
|
CHECK_ALLOCATION(d = malloc(sizeof(struct sii_data))); |
449 |
memset(d, 0, sizeof(struct sii_data)); |
memset(d, 0, sizeof(struct sii_data)); |
450 |
|
|
451 |
INTERRUPT_CONNECT(irq_path, d->irq); |
INTERRUPT_CONNECT(irq_path, d->irq); |
452 |
d->buf_start = buf_start; |
d->buf_start = buf_start; |
453 |
d->buf_end = buf_end; |
d->buf_end = buf_end; |
457 |
dev_sii_access, (void *)d, DM_DEFAULT, NULL); |
dev_sii_access, (void *)d, DM_DEFAULT, NULL); |
458 |
|
|
459 |
machine_add_tickfunction(machine, dev_sii_tick, d, |
machine_add_tickfunction(machine, dev_sii_tick, d, |
460 |
SII_TICK_SHIFT, 0.0); |
SII_TICK_SHIFT); |
461 |
} |
} |
462 |
|
|