Blackfin: add support for restart_syscall()
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
9e228ee9ea
commit
ddaebcabbc
|
@ -17,6 +17,7 @@
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/ucontext.h>
|
#include <asm/ucontext.h>
|
||||||
#include <asm/fixed_code.h>
|
#include <asm/fixed_code.h>
|
||||||
|
#include <asm/syscall.h>
|
||||||
|
|
||||||
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
|
||||||
|
|
||||||
|
@ -50,6 +51,9 @@ rt_restore_sigcontext(struct pt_regs *regs, struct sigcontext __user *sc, int *p
|
||||||
unsigned long usp = 0;
|
unsigned long usp = 0;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
|
/* Always make any pending restarted system calls return -EINTR */
|
||||||
|
current_thread_info()->restart_block.fn = do_no_restart_syscall;
|
||||||
|
|
||||||
#define RESTORE(x) err |= __get_user(regs->x, &sc->sc_##x)
|
#define RESTORE(x) err |= __get_user(regs->x, &sc->sc_##x)
|
||||||
|
|
||||||
/* restore passed registers */
|
/* restore passed registers */
|
||||||
|
@ -237,6 +241,11 @@ handle_restart(struct pt_regs *regs, struct k_sigaction *ka, int has_handler)
|
||||||
regs->r0 = regs->orig_r0;
|
regs->r0 = regs->orig_r0;
|
||||||
regs->pc -= 2;
|
regs->pc -= 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case -ERESTART_RESTARTBLOCK:
|
||||||
|
regs->p0 = __NR_restart_syscall;
|
||||||
|
regs->pc -= 2;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue