/* Simply write the address register and read the configuration data. Note that the 4 nops ensure that we are able to handle a delayed abort (in theory.)  */
static u32 iop3xx_read(unsigned long addr)
/* Simply write the address register and read the configuration data. Note that the 4 nops ensure that we are able to handle a delayed abort (in theory.)  */
static u32 iop3xx_read(unsigned long addr)
{
	u32 val;
	__asm__ __volatile__(
		"str	%1, [%2]\n\t"
		"ldr	%0, [%3]\n\t"
		"nop\n\t"
		"nop\n\t"
		"nop\n\t"
		"nop\n\t"
		: "=r" (val)
		: "r" (addr), "r" (IOP3XX_OCCAR), "r" (IOP3XX_OCCDR));
	return val;
}