* a0: run
* a1: vcpu
*/
-
-FEXPORT(__kvm_mips_vcpu_run)
- .set push
.set noreorder
.set noat
+FEXPORT(__kvm_mips_vcpu_run)
/* k0/k1 not being used in host kernel context */
addiu k1, sp, -PT_SIZE
LONG_S $0, PT_R0(k1)
/* Jump to guest */
eret
- .set pop
VECTOR(MIPSX(exception), unknown)
/*
* Find out what mode we came from and jump to the proper handler.
*/
- .set push
- .set noat
- .set noreorder
mtc0 k0, CP0_ERROREPC #01: Save guest k0
ehb #02:
addiu k0, k0, 0x2000 #06: Exception handler is installed @ offset 0x2000
j k0 #07: jump to the function
nop #08: branch delay slot
- .set push
VECTOR_END(MIPSX(exceptionEnd))
.end MIPSX(exception)
*
*/
NESTED (MIPSX(GuestException), CALLFRAME_SIZ, ra)
- .set push
- .set noat
- .set noreorder
-
/* Get the VCPU pointer from DDTATA_LO */
mfc0 k1, CP0_DDATA_LO
addiu k1, k1, VCPU_HOST_ARCH
j ra
nop
- .set pop
VECTOR_END(MIPSX(GuestExceptionEnd))
.end MIPSX(GuestException)