00001
00038 #ifndef CPU_IO_H_INCLUDED
00039 #define CPU_IO_H_INCLUDED
00040
00046 #ifndef __ASSEMBLY__
00047
00048 #include <stdint.h>
00049
00050 static inline uint8_t mmio_read8(const void *p)
00051 {
00052 return *((const volatile uint8_t *)p);
00053 }
00054
00055 static inline void mmio_write8(void *p, uint8_t val)
00056 {
00057 *(volatile uint8_t *)p = val;
00058 }
00059
00072 static inline uint16_t mmio_read16(const void *p)
00073 {
00074 uint8_t *addr = (uint8_t *)p;
00075 uint16_t val;
00076
00077 val = mmio_read8(addr);
00078 val |= mmio_read8(++addr) << 8;
00079
00080 return val;
00081 }
00082
00095 static inline void mmio_write16(void *p, uint16_t val)
00096 {
00097 uint8_t *addr = (uint8_t *)p;
00098
00099 mmio_write8(addr, val & 0xff);
00100 mmio_write8(++addr, val >> 8);
00101 }
00102
00109 extern void mmio_ccp_write8(void *addr, uint8_t value);
00110
00111 #endif
00112
00114
00115 #endif