aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/microblaze/kernel/entry.S')
-rw-r--r--arch/microblaze/kernel/entry.S30
1 files changed, 13 insertions, 17 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S
index 66e34a3bfe1b..daff9e5e4a1f 100644
--- a/arch/microblaze/kernel/entry.S
+++ b/arch/microblaze/kernel/entry.S
@@ -430,13 +430,12 @@ C_ENTRY(ret_from_trap):
4305: /* get thread info from current task*/ 4305: /* get thread info from current task*/
431 lwi r11, CURRENT_TASK, TS_THREAD_INFO; 431 lwi r11, CURRENT_TASK, TS_THREAD_INFO;
432 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 432 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
433 andi r11, r11, _TIF_SIGPENDING; 433 andi r11, r11, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME;
434 beqi r11, 1f; /* Signals to handle, handle them */ 434 beqi r11, 1f; /* Signals to handle, handle them */
435 435
436 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */ 436 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */
437 addi r7, r0, 1; /* Arg 3: int in_syscall */ 437 bralid r15, do_notify_resume; /* Handle any signals */
438 bralid r15, do_signal; /* Handle any signals */ 438 addi r6, r0, 1; /* Arg 2: int in_syscall */
439 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
440 439
441/* Finally, return to user state. */ 440/* Finally, return to user state. */
4421: set_bip; /* Ints masked for state restore */ 4411: set_bip; /* Ints masked for state restore */
@@ -622,7 +621,7 @@ C_ENTRY(ret_from_exc):
622 /* Maybe handle a signal */ 621 /* Maybe handle a signal */
6235: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */ 6225: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
624 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 623 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
625 andi r11, r11, _TIF_SIGPENDING; 624 andi r11, r11, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME;
626 beqi r11, 1f; /* Signals to handle, handle them */ 625 beqi r11, 1f; /* Signals to handle, handle them */
627 626
628 /* 627 /*
@@ -635,11 +634,10 @@ C_ENTRY(ret_from_exc):
635 * traps), but signal handlers may want to examine or change the 634 * traps), but signal handlers may want to examine or change the
636 * complete register state. Here we save anything not saved by 635 * complete register state. Here we save anything not saved by
637 * the normal entry sequence, so that it may be safely restored 636 * the normal entry sequence, so that it may be safely restored
638 * (in a possibly modified form) after do_signal returns. */ 637 * (in a possibly modified form) after do_notify_resume returns. */
639 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */ 638 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */
640 addi r7, r0, 0; /* Arg 3: int in_syscall */ 639 bralid r15, do_notify_resume; /* Handle any signals */
641 bralid r15, do_signal; /* Handle any signals */ 640 addi r6, r0, 0; /* Arg 2: int in_syscall */
642 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
643 641
644/* Finally, return to user state. */ 642/* Finally, return to user state. */
6451: set_bip; /* Ints masked for state restore */ 6431: set_bip; /* Ints masked for state restore */
@@ -732,13 +730,12 @@ ret_from_irq:
732 /* Maybe handle a signal */ 730 /* Maybe handle a signal */
7335: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* MS: get thread info */ 7315: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* MS: get thread info */
734 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 732 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
735 andi r11, r11, _TIF_SIGPENDING; 733 andi r11, r11, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME;
736 beqid r11, no_intr_resched 734 beqid r11, no_intr_resched
737/* Handle a signal return; Pending signals should be in r18. */ 735/* Handle a signal return; Pending signals should be in r18. */
738 addi r7, r0, 0; /* Arg 3: int in_syscall */
739 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */ 736 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */
740 bralid r15, do_signal; /* Handle any signals */ 737 bralid r15, do_notify_resume; /* Handle any signals */
741 add r6, r0, r0; /* Arg 2: sigset_t *oldset */ 738 addi r6, r0, 0; /* Arg 2: int in_syscall */
742 739
743/* Finally, return to user state. */ 740/* Finally, return to user state. */
744no_intr_resched: 741no_intr_resched:
@@ -869,13 +866,12 @@ dbtrap_call: /* Return point for kernel/user entry + 8 because of rtsd r15, 8 */
869 /* Maybe handle a signal */ 866 /* Maybe handle a signal */
8705: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */ 8675: lwi r11, CURRENT_TASK, TS_THREAD_INFO; /* get thread info */
871 lwi r11, r11, TI_FLAGS; /* get flags in thread info */ 868 lwi r11, r11, TI_FLAGS; /* get flags in thread info */
872 andi r11, r11, _TIF_SIGPENDING; 869 andi r11, r11, _TIF_SIGPENDING | _TIF_NOTIFY_RESUME;
873 beqi r11, 1f; /* Signals to handle, handle them */ 870 beqi r11, 1f; /* Signals to handle, handle them */
874 871
875 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */ 872 addik r5, r1, 0; /* Arg 1: struct pt_regs *regs */
876 addi r7, r0, 0; /* Arg 3: int in_syscall */ 873 bralid r15, do_notify_resume; /* Handle any signals */
877 bralid r15, do_signal; /* Handle any signals */ 874 addi r6, r0, 0; /* Arg 2: int in_syscall */
878 add r6, r0, r0; /* Arg 2: sigset_t *oldset */
879 875
880/* Finally, return to user state. */ 876/* Finally, return to user state. */
8811: swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */ 8771: swi CURRENT_TASK, r0, PER_CPU(CURRENT_SAVE); /* save current */