/* Copy a 4kB page of main memory to an expanded memory page  */
static long xpram_page_out(unsigned long page_addr, unsigned int xpage_index)
/* Copy a 4kB page of main memory to an expanded memory page  */
static long xpram_page_out(unsigned long page_addr, unsigned int xpage_index)
{
	int cc = 2;
	asm volatile(
		"	.insn	rre,0xb22f0000,%1,%2\n"
		"0:	ipm	%0\n"
		"	srl	%0,28\n"
		"1:\n"
		EX_TABLE(0b,1b)
		: "+d" (cc) : "a" (__pa(page_addr)), "d" (xpage_index) : "cc");
	if (cc == 3)
		return -ENXIO;
	if (cc == 2)
		return -ENXIO;
	if (cc == 1)
		return -EIO;
	return 0;
}