summaryrefslogtreecommitdiff
path: root/arch/microblaze/kernel/signal.c
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2009-04-21 14:08:47 +0200
committerMichal Simek <monstr@monstr.eu>2009-04-23 16:27:33 +0200
commit2921e2bd679949a7892d308b414e6a3b3c705260 (patch)
tree4be639979e46583a1c6e2d12b26a78b989a8c49c /arch/microblaze/kernel/signal.c
parent6dfb79aa114ac69032f3931235ffc90799e9630b (diff)
microblaze: Add STATE_SAVE_ARG_SPACE for noMMU kernel too
For noMMU kernel this change nothing bring but this change helps with MMU synchronization. Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/kernel/signal.c')
-rw-r--r--arch/microblaze/kernel/signal.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/microblaze/kernel/signal.c b/arch/microblaze/kernel/signal.c
index 3889cf45fa7..40d36931e36 100644
--- a/arch/microblaze/kernel/signal.c
+++ b/arch/microblaze/kernel/signal.c
@@ -178,7 +178,9 @@ restore_sigcontext(struct pt_regs *regs, struct sigcontext *sc, int *rval_p)
asmlinkage int sys_sigreturn(struct pt_regs *regs)
{
- struct sigframe *frame = (struct sigframe *)regs->r1;
+ struct sigframe *frame =
+ (struct sigframe *)(regs->r1 + STATE_SAVE_ARG_SPACE);
+
sigset_t set;
int rval;
@@ -209,7 +211,9 @@ badframe:
asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
{
- struct rt_sigframe *frame = (struct rt_sigframe *)regs->r1;
+ struct rt_sigframe *frame =
+ (struct rt_sigframe *)(regs->r1 + STATE_SAVE_ARG_SPACE);
+
sigset_t set;
stack_t st;
int rval;
@@ -336,7 +340,8 @@ static void setup_frame(int sig, struct k_sigaction *ka,
goto give_sigsegv;
/* Set up registers for signal handler */
- regs->r1 = (unsigned long) frame;
+ regs->r1 = (unsigned long) frame - STATE_SAVE_ARG_SPACE;
+
/* Signal handler args: */
regs->r5 = signal; /* Arg 0: signum */
regs->r6 = (unsigned long) &frame->sc; /* arg 1: sigcontext */
@@ -414,7 +419,8 @@ static void setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info,
goto give_sigsegv;
/* Set up registers for signal handler */
- regs->r1 = (unsigned long) frame;
+ regs->r1 = (unsigned long) frame - STATE_SAVE_ARG_SPACE;
+
/* Signal handler args: */
regs->r5 = signal; /* arg 0: signum */
regs->r6 = (unsigned long) &frame->info; /* arg 1: siginfo */