#include #include #include #include "cm200io.h" extern Set(); extern dnc_Wait_count(void *, int); /* 50 equates to 100 ticks in bla loop, == 4 uS on -25 */ #define dnc_Wait(a) dnc_Wait_count(a,50) /* #define dnc_Wait(a) Wait(a) */ #define start_transaction(t,n) \ dnc_Wait (&output_ccb->lock); \ output_ccb->command_type = t; \ output_ccb->command_no = n; \ output_ccb->ack = 1 #define end_transaction() dnc_Wait (&output_ccb->ack) #define event() Set(&ioc->tevent,1) /*{{{ void dN_ld_list_run (int linkno)*/ void dN_ld_list_run (int linkno) { start_transaction(IO_LISTDRIVER_RUN, linkno); event(); end_transaction(); } /*}}} */ /*{{{ void dN_ld_list_add (int linkno, void *data, int size)*/ void dN_ld_list_add (int linkno, void *data, int size, int pre, int post ) { int *dptr = (int *) &output_ccb->data[0]; /* printf ("dN_ld_list_add, link %d data 0x%x size %d\n", linkno, data, size ); */ if (pre) end_transaction(); start_transaction(IO_LISTDRIVER_ADD, linkno); *dptr++=(int) data; *dptr =size; event(); if (post) end_transaction(); } /*}}} */