|
|
|
|
|
|
|
|
return port().RDR; |
|
|
return port().RDR; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void inline transfer(void *buf, size_t count) {transfer(buf, buf, count);} |
|
|
|
|
|
|
|
|
void inline transfer(void *buf, size_t count) { |
|
|
|
|
|
#if 0 |
|
|
|
|
|
// Ethernet library fails if this is used. Why? |
|
|
|
|
|
if (__builtin_constant_p(count)) { |
|
|
|
|
|
if (count < 1) return; |
|
|
|
|
|
if (((count & 3) == 0) && (((uint32_t)buf & 3) == 0)) { |
|
|
|
|
|
// size is multiple of 4 and buffer is 32 bit aligned |
|
|
|
|
|
transfer32(buf, buf, count); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (((count & 1) == 0) && (((uint32_t)buf & 1) == 0)) { |
|
|
|
|
|
// size is multiple of 2 and buffer is 16 bit aligned |
|
|
|
|
|
transfer16(buf, buf, count); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
#endif |
|
|
|
|
|
transfer(buf, buf, count); |
|
|
|
|
|
} |
|
|
void setTransferWriteFill(uint8_t ch ) {_transferWriteFill = ch;} |
|
|
void setTransferWriteFill(uint8_t ch ) {_transferWriteFill = ch;} |
|
|
void transfer(const void * buf, void * retbuf, size_t count); |
|
|
void transfer(const void * buf, void * retbuf, size_t count); |
|
|
|
|
|
|