On 07/12/2015 21:36, David Matlack wrote: > set_exception_return forces exceptions handlers to return to a specific > address instead of returning to the instruction address pushed by the > CPU at the time of the exception. The unit tests apic.c and vmx.c use > this functionality to recover from expected exceptions. > > When using set_exception_return we have to be careful not to modify the > stack (such as by doing a function call) as triggering the exception will > likely jump us past the instructions which undo the stack manipulation > (such as a ret). To accomplish this, declare all functions called after > set_exception_return as __always_inline, so that the compiler always > inlines them.
set_exception_return is generally not a great idea IMHO---thanks for looking at it. A couple years ago we discussed adding setjmp/longjmp to libcflat (http://www.spinics.net/lists/kvm/msg94159.html which is however missing a 32-bit version). Making the exceptions do a longjmp would be a much safer option. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html