diff options
author | Michal Simek <monstr@monstr.eu> | 2010-08-06 10:36:02 +0200 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-10-21 15:51:27 +1000 |
commit | 791d0a169b912220d58e0ce4564d7bf1e68146a8 (patch) | |
tree | 56d44913c6c07134f4ee8d35c1511d63168b3dad /arch/microblaze | |
parent | 06d1973490199d38a65029101199e04004fbe8f3 (diff) | |
download | op-kernel-dev-791d0a169b912220d58e0ce4564d7bf1e68146a8.zip op-kernel-dev-791d0a169b912220d58e0ce4564d7bf1e68146a8.tar.gz |
microblaze: Fix sys_rt_sigreturn_wrapper
Do not save return registers before rt_sigreturn is called.
_user_exception(syscall handler) already setup return address
that's why it is removed from rt_sigreturn_wrapper.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze')
-rw-r--r-- | arch/microblaze/kernel/entry.S | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index 304882e..ab4f1e1 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S @@ -458,14 +458,8 @@ C_ENTRY(sys_execve): addik r8, r1, PTO; /* add user context as 4th arg */ C_ENTRY(sys_rt_sigreturn_wrapper): - swi r3, r1, PTO+PT_R3; /* restore saved r3, r4 registers */ - swi r4, r1, PTO+PT_R4; - brlid r15, sys_rt_sigreturn /* Do real work */ + brid sys_rt_sigreturn /* Do real work */ addik r5, r1, PTO; /* add user context as 1st arg */ - lwi r3, r1, PTO+PT_R3; /* restore saved r3, r4 registers */ - lwi r4, r1, PTO+PT_R4; - bri ret_from_trap /* fall through will not work here due to align */ - nop; /* * HW EXCEPTION rutine start |