i have a homework, but i dun know where is wrong in this
device controller program
Code:
struct devregs{
unsigned short csr;
unsigned short data;
}
#define ERROR 0x01
#define READY 0x02
#define RESET 0x04
#define DEVADDR ((struct devregs*)0xffff0004)
#define NDEVS 4
unsigned int read_dev(unsigned devno){
struct devregs *dvp=DEVADDR + devno;
if (devno >=NDEVS) return(0xffff);
while((dvp->csr &(READY | ERROR))==0)
if (dvp->csr & ERROR){
dvp->csr = RESET;
return(0xffff);
}
return((dvp->data)& 0xff)
}