microblaze: Simplify _debug_exception function
authorMichal Simek <monstr@monstr.eu>
Tue, 22 Jun 2010 13:25:24 +0000 (15:25 +0200)
committerMichal Simek <monstr@monstr.eu>
Wed, 4 Aug 2010 08:22:48 +0000 (10:22 +0200)
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>
arch/microblaze/kernel/entry.S

index 0426571..04267ca 100644 (file)
@@ -895,15 +895,12 @@ C_ENTRY(_debug_exception):
        swi     r0, r1, PTO+PT_R0;
        tovirt(r1,r1)
 
+       set_vms;
        addi    r5, r0, SIGTRAP              /* send the trap signal */
        add     r6, r0, CURRENT_TASK; /* Get current task ptr into r11 */
        addk    r7, r0, r0                   /* 3rd param zero */
-
-       set_vms;
-       addik   r11, r0, send_sig;
+dbtrap_call:   rtbd    r0, send_sig;
        addik   r15, r0, dbtrap_call;
-dbtrap_call:   rtbd    r11, 0;
-       nop;
 
        set_bip;                        /*  Ints masked for state restore*/
        lwi     r11, r1, PTO+PT_MODE;