diff options
author | Michal Simek <monstr@monstr.eu> | 2010-06-22 10:25:31 -0400 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-08-04 04:30:06 -0400 |
commit | c318d483b3d9cf68d791b4024760cb171dae1215 (patch) | |
tree | 56ab8626cfa2b248870c04018e22ed6aa18b7f5d /arch/microblaze/kernel/entry.S | |
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/kernel/entry.S')
-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): | |||
562 | nop | 562 | nop |
563 | mts rfsr, r0; /* Clear sticky fsr */ | 563 | mts rfsr, r0; /* Clear sticky fsr */ |
564 | nop | 564 | nop |
565 | addik r12, r0, full_exception | 565 | rted r0, full_exception |
566 | set_vms; | 566 | nop |
567 | rted r12, 0; | ||
568 | nop; | ||
569 | 567 | ||
570 | /* | 568 | /* |
571 | * Unaligned data trap. | 569 | * Unaligned data trap. |
@@ -599,11 +597,8 @@ C_ENTRY(unaligned_data_trap): | |||
599 | nop | 597 | nop |
600 | mfs r4, rear /* EAR */ | 598 | mfs r4, rear /* EAR */ |
601 | nop | 599 | nop |
600 | rtbd r0, _unaligned_data_exception | ||
602 | addik r7, r1, PTO /* parameter struct pt_regs * regs */ | 601 | addik r7, r1, PTO /* parameter struct pt_regs * regs */ |
603 | addik r12, r0, _unaligned_data_exception | ||
604 | set_vms; | ||
605 | rtbd r12, 0; /* interrupts enabled */ | ||
606 | nop; | ||
607 | 602 | ||
608 | /* | 603 | /* |
609 | * Page fault traps. | 604 | * Page fault traps. |
@@ -635,10 +630,8 @@ C_ENTRY(page_fault_data_trap): | |||
635 | nop | 630 | nop |
636 | mfs r7, resr /* parameter unsigned long error_code */ | 631 | mfs r7, resr /* parameter unsigned long error_code */ |
637 | nop | 632 | nop |
638 | addik r12, r0, do_page_fault | 633 | rted r0, do_page_fault |
639 | set_vms; | 634 | nop |
640 | rted r12, 0; /* interrupts enabled */ | ||
641 | nop; | ||
642 | 635 | ||
643 | C_ENTRY(page_fault_instr_trap): | 636 | C_ENTRY(page_fault_instr_trap): |
644 | SAVE_STATE /* Save registers.*/ | 637 | SAVE_STATE /* Save registers.*/ |
@@ -650,11 +643,8 @@ C_ENTRY(page_fault_instr_trap): | |||
650 | addik r5, r1, PTO /* parameter struct pt_regs * regs */ | 643 | addik r5, r1, PTO /* parameter struct pt_regs * regs */ |
651 | mfs r6, rear /* parameter unsigned long address */ | 644 | mfs r6, rear /* parameter unsigned long address */ |
652 | nop | 645 | nop |
646 | rted r0, do_page_fault | ||
653 | ori r7, r0, 0 /* parameter unsigned long error_code */ | 647 | ori r7, r0, 0 /* parameter unsigned long error_code */ |
654 | addik r12, r0, do_page_fault | ||
655 | set_vms; | ||
656 | rted r12, 0; /* interrupts enabled */ | ||
657 | nop; | ||
658 | 648 | ||
659 | /* Entry point used to return from an exception. */ | 649 | /* Entry point used to return from an exception. */ |
660 | C_ENTRY(ret_from_exc): | 650 | C_ENTRY(ret_from_exc): |