aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel/entry.S
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2010-06-22 10:25:31 -0400
committerMichal Simek <monstr@monstr.eu>2010-08-04 04:30:06 -0400
commitc318d483b3d9cf68d791b4024760cb171dae1215 (patch)
tree56ab8626cfa2b248870c04018e22ed6aa18b7f5d /arch/microblaze/kernel/entry.S
parentb318067e2c946a560035faf47e24a20e50696cce (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.S22
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
643C_ENTRY(page_fault_instr_trap): 636C_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. */
660C_ENTRY(ret_from_exc): 650C_ENTRY(ret_from_exc):