qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] linux-user exception handling


From: Vince Weaver
Subject: [Qemu-devel] linux-user exception handling
Date: Mon, 25 Aug 2008 16:26:06 -0400 (EDT)

Hello

so I'm tracking down a problem on sparc32plus-linux-user.
SPARC has register windows, and when it tried to save another register context, but all available ones are full, it causes a TT_SPILL exception. In theory the OS would handle this and move some of the registers to RAM somewhere.

In any case, this doesn't seem to be working properly. I've traced through the code, and I find in cpu-exec.c where userspace exceptions are handled.

The code involved in listed below.

Am I correct in reading that user-mode exceptions are only implemented for x86? If so that makes me sad, because it means that pretty much any SPARC program that has more than 8 nested function calls won't work until a lot more code is implemented.

Vince



               } else if (env->user_mode_only) {
                    /* if user mode only, we simulate a fake exception
                       which will be handled outside the cpu execution
                       loop */
#if defined(TARGET_I386)
                    do_interrupt_user(env->exception_index,
                                      env->exception_is_int,
                                      env->error_code,
                                      env->exception_next_eip);
                    /* successfully delivered */
                    env->old_exception = -1;
#endif
                    ret = env->exception_index;
                    break;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]