inline uint16_t __BS(read_2)(void *v, bus_space_handle_t h, bus_size_t off) { #if CHIP_ACCESS_SIZE > 2 volatile CHIP_TYPE *ptr; #else /* CHIP_ACCESS_SIZE > 2 */ volatile uint16_t *ptr; #endif /* CHIP_ACCESS_SIZE > 2 */ ptr = (void *)(h + CHIP_OFF16(off)); return CHIP_SWAP16(*ptr) & 0xffff; }
inline void __BS(write_2)(void *v, bus_space_handle_t h, bus_size_t off, uint16_t val) { #if CHIP_ACCESS_SIZE > 2 volatile CHIP_TYPE *ptr; #else /* CHIP_ACCESS_SIZE > 2 */ volatile uint16_t *ptr; #endif /* CHIP_ACCESS_SIZE > 2 */ ptr = (void *)(h + CHIP_OFF16(off)); *ptr = CHIP_SWAP16(val); }
static uint16_t __BS(read_stream_2)(void *v, bus_space_handle_t h, bus_size_t off) { h += CHIP_OFF16(off); #if CHIP_ACCESS_SIZE == 8 return (uint16_t)mips3_ld(h); #elif CHIP_ACCESS_SIZE == 4 return (uint16_t)mips_lwu(h); #else return (uint16_t)mips_lbu(h); #endif }
static uint16_t __BS(read_2)(void *v, bus_space_handle_t h, bus_size_t off) { KASSERT((off & 1) == 0); h += CHIP_OFF16(off); const int shift = (h & (CHIP_ACCESS_SIZE - 1)) * 8; h &= ~((bus_space_handle_t)(CHIP_ACCESS_SIZE - 1)); #if CHIP_ACCESS_SIZE == 8 const CHIP_TYPE val = mips3_ld(h); #elif CHIP_ACCESS_SIZE == 4 const CHIP_TYPE val = mips_lwu(h); #else const uint16_t val = mips_lhu(h); #endif const uint16_t r = (uint16_t)CHIP_SWAP16(val >> shift); return r; }
static void __BS(write_2)(void *v, bus_space_handle_t h, bus_size_t off, uint16_t val) { KASSERT((h & 1) == 0); KASSERT((off & 1) == 0); h += CHIP_OFF16(off); #if CHIP_ACCES_SIZE <= 2 mips_sh(h, CHIP_SWAP16(val)); #else const int shift = (h & (CHIP_ACCESS_SIZE - 1)) * 8; h &= ~((bus_space_handle_t)(CHIP_ACCESS_SIZE - 1)); CHIP_TYPE cval = ((CHIP_TYPE)CHIP_SWAP16(val)) << shift; # if CHIP_ACCESS_SIZE == 8 mips3_sd(h, val); # else mips_sw(h, val); # endif #endif }