提交 841d6e8c 编写于 作者: M Michal Simek

microblaze: entry.S use delay slot for return handlers

Signed-off-by: NMichal Simek <monstr@monstr.eu>
上级 8633bebc
...@@ -414,10 +414,9 @@ C_ENTRY(ret_from_trap): ...@@ -414,10 +414,9 @@ C_ENTRY(ret_from_trap):
beqi r11, 1f; /* Signals to handle, handle them */ beqi r11, 1f; /* Signals to handle, handle them */
la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */
add r6, r0, r0; /* Arg 2: sigset_t *oldset */
addi r7, r0, 1; /* Arg 3: int in_syscall */ addi r7, r0, 1; /* Arg 3: int in_syscall */
bralid r15, do_signal; /* Handle any signals */ bralid r15, do_signal; /* Handle any signals */
nop; add r6, r0, r0; /* Arg 2: sigset_t *oldset */
/* Finally, return to user state. */ /* Finally, return to user state. */
1: 1:
...@@ -692,10 +691,9 @@ C_ENTRY(ret_from_exc): ...@@ -692,10 +691,9 @@ C_ENTRY(ret_from_exc):
* store return registers separately because this macros is use * store return registers separately because this macros is use
* for others exceptions */ * for others exceptions */
la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */
add r6, r0, r0; /* Arg 2: sigset_t *oldset */
addi r7, r0, 0; /* Arg 3: int in_syscall */ addi r7, r0, 0; /* Arg 3: int in_syscall */
bralid r15, do_signal; /* Handle any signals */ bralid r15, do_signal; /* Handle any signals */
nop; add r6, r0, r0; /* Arg 2: sigset_t *oldset */
/* Finally, return to user state. */ /* Finally, return to user state. */
1: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */ 1: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */
...@@ -968,10 +966,9 @@ dbtrap_call: rtbd r11, 0; ...@@ -968,10 +966,9 @@ dbtrap_call: rtbd r11, 0;
(in a possibly modified form) after do_signal returns. */ (in a possibly modified form) after do_signal returns. */
la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */
add r6, r0, r0; /* Arg 2: sigset_t *oldset */
addi r7, r0, 0; /* Arg 3: int in_syscall */ addi r7, r0, 0; /* Arg 3: int in_syscall */
bralid r15, do_signal; /* Handle any signals */ bralid r15, do_signal; /* Handle any signals */
nop; add r6, r0, r0; /* Arg 2: sigset_t *oldset */
/* Finally, return to user state. */ /* Finally, return to user state. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册