If the status register is badly set (cp0_status_ksu == 3) MSIM may terminate on assertion in either convert_addr_kernel32 or convert_addr_kernel64 because of ASSERT(CPU_KERNEL_MODE(cpu)); (inside cpu.c, called from convert_addr).
It should probably be better to throw an exception (perhaps excCpU for Coprocessor Unusable) to allow the user debug the problem instead of aborting forcefully.
[Reproducible with Kalisto if one of the mfc0 $status is commented out in the context switch code.]
If the status register is badly set (
cp0_status_ksu == 3
) MSIM may terminate on assertion in eitherconvert_addr_kernel32
orconvert_addr_kernel64
because ofASSERT(CPU_KERNEL_MODE(cpu));
(insidecpu.c
, called fromconvert_addr
).It should probably be better to throw an exception (perhaps
excCpU
for Coprocessor Unusable) to allow the user debug the problem instead of aborting forcefully.[Reproducible with Kalisto if one of the
mfc0 $status
is commented out in the context switch code.]