• Andreas Larsson's avatar
    sparc32: Preserve clone syscall flags argument for restarts due to signals · c599a782
    Andreas Larsson authored
    This fixes a bug where a clone syscall that is restarted due to a
    pending signal is restarted with garbage in the register %o0 that holds
    the clone flags.
    
    This keep the original %i0 of a syscall (as seen from the trap handler)
    in %l6 rather than %l5. This is done because for clone (and also qfork)
    %l5 is used as a temporary variable in the same register window. Before
    this, that temporary value would be the value that was then incorrectly
    used as the orig_i0 argument to do_notify_resume.
    
    In order to preserve %l6, the temporary usage of %l6 in ret_sys_call is
    changed to use %l5 instead and the setting %l6 to 0 or 1 was removed.
    The use of that 0 or 1 value in %l6 was removed in commit
    28e61036.
    Signed-off-by: default avatarAndreas Larsson <andreas@gaisler.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c599a782
rtrap_32.S 5.63 KB