diff options
author | Michal Simek <monstr@monstr.eu> | 2010-06-22 16:25:31 +0200 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-08-04 10:30:06 +0200 |
commit | c318d483b3d9cf68d791b4024760cb171dae1215 (patch) | |
tree | 56ab8626cfa2b248870c04018e22ed6aa18b7f5d /arch/microblaze | |
parent | b318067e2c946a560035faf47e24a20e50696cce (diff) |
microblaze: Optimize hw exception rutine
Remove set_vms because UMS is cleared and VMS is already setup.
Optimize function calling which save one additional instruction.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze')
-rw-r--r-- | arch/microblaze/kernel/entry.S | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/arch/microblaze/kernel/entry.S b/arch/microblaze/kernel/entry.S index 5529f64e97e8..ff8d9872c774 100644 --- a/arch/microblaze/kernel/entry.S +++ b/arch/microblaze/kernel/entry.S @@ -562,10 +562,8 @@ C_ENTRY(full_exception_trap): nop mts rfsr, r0; /* Clear sticky fsr */ nop - addik r12, r0, full_exception - set_vms; - rted r12, 0; - nop; + rted r0, full_exception + nop /* * Unaligned data trap. @@ -599,11 +597,8 @@ C_ENTRY(unaligned_data_trap): nop mfs r4, rear /* EAR */ nop + rtbd r0, _unaligned_data_exception addik r7, r1, PTO /* parameter struct pt_regs * regs */ - addik r12, r0, _unaligned_data_exception - set_vms; - rtbd r12, 0; /* interrupts enabled */ - nop; /* * Page fault traps. @@ -635,10 +630,8 @@ C_ENTRY(page_fault_data_trap): nop mfs r7, resr /* parameter unsigned long error_code */ nop - addik r12, r0, do_page_fault - set_vms; - rted r12, 0; /* interrupts enabled */ - nop; + rted r0, do_page_fault + nop C_ENTRY(page_fault_instr_trap): SAVE_STATE /* Save registers.*/ @@ -650,11 +643,8 @@ C_ENTRY(page_fault_instr_trap): addik r5, r1, PTO /* parameter struct pt_regs * regs */ mfs r6, rear /* parameter unsigned long address */ nop + rted r0, do_page_fault ori r7, r0, 0 /* parameter unsigned long error_code */ - addik r12, r0, do_page_fault - set_vms; - rted r12, 0; /* interrupts enabled */ - nop; /* Entry point used to return from an exception. */ C_ENTRY(ret_from_exc): |