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