#include #include "ROD.h" #include "ti_dsp.h" #define RDPU_BADDR (1 << 16) static int vme_errno; /* Sticky VME error code */ extern rod_t *pROD; /* FIXME */ /* ---------------------------------------------------------------------- Our implementation of vme_dsp access functions ---------------------------------------------------------------------- */ void vme_dsp_write(ti_dsp_p dsp, ti_addr_t pu_addr, unsigned int data) { int addr, realb, ierr; addr = RDPU_BADDR | (1 << (6+dsp->puid)) | (pu_addr << 2); ierr = ROD_Write(pROD, addr, sizeof(int), &realb, &data); if (vme_errno == SUCCESS) vme_errno = ierr; } int vme_dsp_read(ti_dsp_p dsp, ti_addr_t pu_addr) { int addr, realb, data, ierr; addr = RDPU_BADDR | (1 << (6+dsp->puid)) | (pu_addr << 2); ierr = ROD_Read(pROD, addr, sizeof(int), &realb, &data); if (vme_errno == SUCCESS) vme_errno = ierr; return data; } void vme_dsp_writeblk(ti_dsp_p dsp, ti_addr_t pu_addr, int nw, unsigned int *data) { int addr, realb, ierr; addr = RDPU_BADDR | (1 << (6+dsp->puid)) | (pu_addr << 2); ierr = ROD_Write(pROD, addr, nw*sizeof(int), &realb, data); if (vme_errno == SUCCESS) vme_errno = ierr; } void vme_dsp_readblk(ti_dsp_p dsp, ti_addr_t pu_addr, int nw, unsigned int *data) { int addr, realb, ierr; addr = RDPU_BADDR | (1 << (6+dsp->puid)) | (pu_addr << 2); ierr = ROD_Read(pROD, addr, nw*sizeof(int), &realb, data); if (vme_errno == SUCCESS) vme_errno = ierr; } void vme_check() { if (vme_errno != SUCCESS){ fputs("vme_check ERROR\n", stderr); ROD_VMEError(vme_errno); vme_errno = 0; } }