UASM_i_MTC0
UASM_i_MTC0(p, tmp, scratch_vcpu[0], scratch_vcpu[1]);
UASM_i_MTC0(p, tmp, scratch_tmp[0], scratch_tmp[1]);
UASM_i_MTC0(p, reg, C0_EBASE);
UASM_i_MTC0(&p, GPR_A0, scratch_vcpu[0], scratch_vcpu[1]);
UASM_i_MTC0(&p, GPR_T0, C0_EPC);
UASM_i_MTC0(&p, GPR_A0, C0_PWBASE);
UASM_i_MTC0(&p, GPR_K1, scratch_tmp[0], scratch_tmp[1]);
UASM_i_MTC0(&p, GPR_K1, scratch_tmp[0], scratch_tmp[1]);
UASM_i_MTC0(&p, GPR_K0, C0_ENTRYHI);
UASM_i_MTC0(&p, GPR_A0, C0_PWBASE);
UASM_i_MTC0(&p, GPR_S0, scratch_vcpu[0], scratch_vcpu[1]);
UASM_i_MTC0(p, tmp, C0_ENTRYLO0);
UASM_i_MTC0(p, tmp, C0_ENTRYLO1);
UASM_i_MTC0(p, 0, C0_ENTRYLO0);
UASM_i_MTC0(p, tmp, C0_ENTRYLO0); /* load it */
UASM_i_MTC0(p, 0, C0_ENTRYLO1);
UASM_i_MTC0(p, ptep, C0_ENTRYLO1); /* load it */
UASM_i_MTC0(p, scratch, c0_kscratch(), c0_scratch_reg);
UASM_i_MTC0(p, scratch, c0_kscratch(), c0_scratch_reg);
UASM_i_MTC0(p, even, C0_ENTRYLO0); /* load it */
UASM_i_MTC0(p, even, C0_ENTRYLO0); /* load it */
UASM_i_MTC0(p, odd, C0_ENTRYLO1); /* load it */
UASM_i_MTC0(&p, a0, C0_CONTEXT);
UASM_i_MTC0(&p, a0, C0_PWBASE);
UASM_i_MTC0(&p, a0, c0_kscratch(), pgd_reg);
UASM_i_MTC0(&p, a0, c0_kscratch(), pgd_reg);
UASM_i_MTC0(p, 1, c0_kscratch(), scratch_reg);
UASM_i_MTC0(p, pte, C0_ENTRYLO0); /* load it */
UASM_i_MTC0(p, pte, C0_ENTRYLO1); /* load it */
UASM_i_MTC0(p, ptr, C0_ENTRYHI);
UASM_i_MTC0(p, ptr, C0_ENTRYHI);