I am investigating what longjmp is used for in qemu. longjmp is used in a couple of places.
1. void cpu_loop_exit(void) { env->current_tb = NULL; longjmp(env->jmp_env, 1); } cpu_loop_exit is called when there is an interrupt_request or exit_request pending 2. void cpu_resume_from_signal(CPUState *env1, void *puc) { ... longjmp(env->jmp_env, 1); } cpu_resume_from_signal is called in a couple of places, each of which suggests something faulty has happened. my guess is that it will get call when exceptions have occurred in the code cache. Am I right ? Thanks Xin