Skip to content
Snippets Groups Projects
  • Pranith Kumar's avatar
    08e73c48
    tcg: handle EXCP_ATOMIC exception for system emulation · 08e73c48
    Pranith Kumar authored
    
    The patch enables handling atomic code in the guest. This should be
    preferably done in cpu_handle_exception(), but the current assumptions
    regarding when we can execute atomic sections cause a deadlock.
    
    The current mechanism discards the flags which were set in atomic
    execution. We ensure they are properly saved by calling the
    cc->cpu_exec_enter/leave() functions around the loop.
    
    As we are running cpu_exec_step_atomic() from the outermost loop we
    need to avoid an abort() when single stepping over atomic code since
    debug exception longjmp will point to the the setlongjmp in
    cpu_exec(). We do this by setting a new jmp_env so that it jumps back
    here on an exception.
    
    Signed-off-by: default avatarPranith Kumar <bobby.prani@gmail.com>
    [AJB: tweak title, merge with new patches, add mmap_lock]
    Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
    CC: Paolo Bonzini <pbonzini@redhat.com>
    08e73c48
    History
    tcg: handle EXCP_ATOMIC exception for system emulation
    Pranith Kumar authored
    
    The patch enables handling atomic code in the guest. This should be
    preferably done in cpu_handle_exception(), but the current assumptions
    regarding when we can execute atomic sections cause a deadlock.
    
    The current mechanism discards the flags which were set in atomic
    execution. We ensure they are properly saved by calling the
    cc->cpu_exec_enter/leave() functions around the loop.
    
    As we are running cpu_exec_step_atomic() from the outermost loop we
    need to avoid an abort() when single stepping over atomic code since
    debug exception longjmp will point to the the setlongjmp in
    cpu_exec(). We do this by setting a new jmp_env so that it jumps back
    here on an exception.
    
    Signed-off-by: default avatarPranith Kumar <bobby.prani@gmail.com>
    [AJB: tweak title, merge with new patches, add mmap_lock]
    Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
    CC: Paolo Bonzini <pbonzini@redhat.com>