HACREG
to1 && !(HACREG(HACRSR) & RSR_STARY);
to2 && !(HACREG(HACRSR) & RSR_STDRY);
adr = ((HACREG(HACCSAR) & CSAR_MASK) >> CSAR_SHIFT);
*v = ((HACREG(HACCSDR) & CSDR_MASK) >> CSDR_SHIFT);
HACREG(HACRSR) &= ~(RSR_STDRY | RSR_STARY);
HACREG(HACRSR) &= ~(RSR_STDRY | RSR_STARY);
HACREG(HACTSR) &= ~(TSR_CMDAMT);
HACREG(HACCSAR) = (reg << CSAR_SHIFT) | CSAR_RD;
to && !(HACREG(HACTSR) & TSR_CMDAMT);
HACREG(HACTSR) &= ~TSR_CMDAMT;
HACREG(HACTSR) &= ~(TSR_CMDDMT | TSR_CMDAMT);
HACREG(HACCSDR) = (val << CSDR_SHIFT);
HACREG(HACCSAR) = (reg << CSAR_SHIFT) & (~CSAR_RD);
to && !(HACREG(HACTSR) & (TSR_CMDAMT|TSR_CMDDMT));
HACREG(HACTSR) &= ~(TSR_CMDAMT | TSR_CMDDMT);
HACREG(HACCR) = CR_WMRT | CR_ST | CR_B9;
HACREG(HACCR) = CR_ST | CR_B9;
for (tmo = 1000; (tmo > 0) && !(HACREG(HACCR) & CR_CR); tmo--)
HACREG(HACACR) |= ACR_TX12ATOM;
HACREG(HACCR) = 0;
HACREG(HACCR) = CR_CDRT | CR_ST | CR_B9;
HACREG(HACACR) |= d ? ACR_DMARX16 : ACR_DMATX16;
HACREG(HACACR) &= d ? ~ACR_DMARX20 : ~ACR_DMATX20;
HACREG(HACACR) &= d ? ~ACR_DMARX16 : ~ACR_DMATX16;
HACREG(HACACR) |= d ? ACR_DMARX20 : ACR_DMATX20;