aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2010-06-22 09:25:24 -0400
committerMichal Simek <monstr@monstr.eu>2010-08-04 04:22:48 -0400
commit06b2864038517905752bdacd95f1f265ef780f3b (patch)
tree26f787945b246f594d8e25d89a3fb03ca5234430 /arch/microblaze/kernel
parent8b110d157c82f3818fc578b633f0cf7ace9efc22 (diff)
microblaze: Simplify _debug_exception function
Keep together all arguments for send_sig function. Move returning address to delay slot which is executed. Remove additional send_sig loading. I am using IMM part of rtbd instruction with r0. old solution: addik r11, r0, send_sig rtbd r11, 0 nop new solution: rtbd r0, send_sig nop There is one instruction saving. Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/kernel')
-rw-r--r--arch/microblaze/kernel/entry.S7
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S
index 042657165184..04267ca949f0 100644
--- a/arch/microblaze/kernel/entry.S
+++ b/arch/microblaze/kernel/entry.S
@@ -895,15 +895,12 @@ C_ENTRY(_debug_exception):
895 swi r0, r1, PTO+PT_R0; 895 swi r0, r1, PTO+PT_R0;
896 tovirt(r1,r1) 896 tovirt(r1,r1)
897 897
898 set_vms;
898 addi r5, r0, SIGTRAP /* send the trap signal */ 899 addi r5, r0, SIGTRAP /* send the trap signal */
899 add r6, r0, CURRENT_TASK; /* Get current task ptr into r11 */ 900 add r6, r0, CURRENT_TASK; /* Get current task ptr into r11 */
900 addk r7, r0, r0 /* 3rd param zero */ 901 addk r7, r0, r0 /* 3rd param zero */
901 902dbtrap_call: rtbd r0, send_sig;
902 set_vms;
903 addik r11, r0, send_sig;
904 addik r15, r0, dbtrap_call; 903 addik r15, r0, dbtrap_call;
905dbtrap_call: rtbd r11, 0;
906 nop;
907 904
908 set_bip; /* Ints masked for state restore*/ 905 set_bip; /* Ints masked for state restore*/
909 lwi r11, r1, PTO+PT_MODE; 906 lwi r11, r1, PTO+PT_MODE;