diff options
author | Michal Simek <monstr@monstr.eu> | 2010-01-22 08:28:36 -0500 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-03-11 08:26:13 -0500 |
commit | 841d6e8c4e969b2cdd80f7216af34d932c41b1a6 (patch) | |
tree | 162e09999c78dd6a98f83a5a2ee562315ed8b272 /arch/microblaze/kernel | |
parent | 8633bebc63ba5752254925f8b49a19102df1a0ff (diff) |
microblaze: entry.S use delay slot for return handlers
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/kernel')
-rw-r--r-- | arch/microblaze/kernel/entry.S | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index cc9885d441d5..c0ede25c5b99 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S | |||
@@ -414,10 +414,9 @@ C_ENTRY(ret_from_trap): | |||
414 | beqi r11, 1f; /* Signals to handle, handle them */ | 414 | beqi r11, 1f; /* Signals to handle, handle them */ |
415 | 415 | ||
416 | la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ | 416 | la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ |
417 | add r6, r0, r0; /* Arg 2: sigset_t *oldset */ | ||
418 | addi r7, r0, 1; /* Arg 3: int in_syscall */ | 417 | addi r7, r0, 1; /* Arg 3: int in_syscall */ |
419 | bralid r15, do_signal; /* Handle any signals */ | 418 | bralid r15, do_signal; /* Handle any signals */ |
420 | nop; | 419 | add r6, r0, r0; /* Arg 2: sigset_t *oldset */ |
421 | 420 | ||
422 | /* Finally, return to user state. */ | 421 | /* Finally, return to user state. */ |
423 | 1: | 422 | 1: |
@@ -692,10 +691,9 @@ C_ENTRY(ret_from_exc): | |||
692 | * store return registers separately because this macros is use | 691 | * store return registers separately because this macros is use |
693 | * for others exceptions */ | 692 | * for others exceptions */ |
694 | la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ | 693 | la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ |
695 | add r6, r0, r0; /* Arg 2: sigset_t *oldset */ | ||
696 | addi r7, r0, 0; /* Arg 3: int in_syscall */ | 694 | addi r7, r0, 0; /* Arg 3: int in_syscall */ |
697 | bralid r15, do_signal; /* Handle any signals */ | 695 | bralid r15, do_signal; /* Handle any signals */ |
698 | nop; | 696 | add r6, r0, r0; /* Arg 2: sigset_t *oldset */ |
699 | 697 | ||
700 | /* Finally, return to user state. */ | 698 | /* Finally, return to user state. */ |
701 | 1: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */ | 699 | 1: swi r0, r0, PER_CPU(KM); /* Now officially in user state. */ |
@@ -968,10 +966,9 @@ dbtrap_call: rtbd r11, 0; | |||
968 | (in a possibly modified form) after do_signal returns. */ | 966 | (in a possibly modified form) after do_signal returns. */ |
969 | 967 | ||
970 | la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ | 968 | la r5, r1, PTO; /* Arg 1: struct pt_regs *regs */ |
971 | add r6, r0, r0; /* Arg 2: sigset_t *oldset */ | ||
972 | addi r7, r0, 0; /* Arg 3: int in_syscall */ | 969 | addi r7, r0, 0; /* Arg 3: int in_syscall */ |
973 | bralid r15, do_signal; /* Handle any signals */ | 970 | bralid r15, do_signal; /* Handle any signals */ |
974 | nop; | 971 | add r6, r0, r0; /* Arg 2: sigset_t *oldset */ |
975 | 972 | ||
976 | 973 | ||
977 | /* Finally, return to user state. */ | 974 | /* Finally, return to user state. */ |