• Vineet Gupta's avatar
    ARC: [Review] Preparing to fix incorrect syscall restarts due to signals · 5c39c0ab
    Vineet Gupta authored
    To avoid multiple syscall restarts (multiple signals) or no restart at
    all (sigreturn), we need just an extra bit of state "literally 1 bit" in
    struct pt_regs. orig_r8 is the best place to do this, however given the
    way it is encoded currently, we can't add anything simplistically.
    
    Current orig_r8:
    * syscalls   -> 1 to NR_SYSCALLS
    * Exceptions -> NR_SYSCALLS + 1
    * Break-point-> NR_SYSCALLS + 2
    
    In new scheme it is a bit-field
    * lower short word contains the  exact event type (and a new bit to represent
       restart semantics : if syscall was already / can't be restarted)
    * upper short word optionally containing the syscall num - needed by
      likes of tracehooks etc
    
    This patch only changes how orig_r8 is organised and nothing should
    change behaviourily.
    Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    5c39c0ab
ptrace.h 3.63 KB