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 }
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); }