diff options
author | Michal Simek <monstr@monstr.eu> | 2010-03-22 15:37:23 -0400 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-04-01 02:38:23 -0400 |
commit | 7a6bbdc9304b45cc759e03623cbe63d81aff7337 (patch) | |
tree | 42361021652ad0217317d5a7ee4e10f49832d839 /arch/microblaze/kernel/hw_exception_handler.S | |
parent | 708e7153d6fc4d2e5fe15c6ccc5d2907fe8a9c8d (diff) |
microblaze: Prepare work for optimization in exception code
Any sync branch must follow mts instructions not mfs.
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch/microblaze/kernel/hw_exception_handler.S')
-rw-r--r-- | arch/microblaze/kernel/hw_exception_handler.S | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/microblaze/kernel/hw_exception_handler.S b/arch/microblaze/kernel/hw_exception_handler.S index 6651bb437db2..ad6dbf029e6b 100644 --- a/arch/microblaze/kernel/hw_exception_handler.S +++ b/arch/microblaze/kernel/hw_exception_handler.S | |||
@@ -562,7 +562,6 @@ ex_handler_done: | |||
562 | */ | 562 | */ |
563 | mfs r11, rpid | 563 | mfs r11, rpid |
564 | nop | 564 | nop |
565 | bri 4 | ||
566 | mfs r3, rear /* Get faulting address */ | 565 | mfs r3, rear /* Get faulting address */ |
567 | nop | 566 | nop |
568 | /* If we are faulting a kernel address, we have to use the | 567 | /* If we are faulting a kernel address, we have to use the |
@@ -679,18 +678,17 @@ ex_handler_done: | |||
679 | */ | 678 | */ |
680 | handle_data_tlb_miss_exception: | 679 | handle_data_tlb_miss_exception: |
681 | /* Working registers already saved: R3, R4, R5, R6 | 680 | /* Working registers already saved: R3, R4, R5, R6 |
682 | * R3 = ESR | 681 | * R3 = EAR, R4 = ESR |
683 | */ | 682 | */ |
684 | mfs r11, rpid | 683 | mfs r11, rpid |
685 | nop | 684 | nop |
686 | bri 4 | ||
687 | mfs r3, rear /* Get faulting address */ | 685 | mfs r3, rear /* Get faulting address */ |
688 | nop | 686 | nop |
689 | 687 | ||
690 | /* If we are faulting a kernel address, we have to use the | 688 | /* If we are faulting a kernel address, we have to use the |
691 | * kernel page tables. */ | 689 | * kernel page tables. */ |
692 | ori r4, r0, CONFIG_KERNEL_START | 690 | ori r6, r0, CONFIG_KERNEL_START |
693 | cmpu r4, r3, r4 | 691 | cmpu r4, r3, r6 |
694 | bgti r4, ex5 | 692 | bgti r4, ex5 |
695 | ori r4, r0, swapper_pg_dir | 693 | ori r4, r0, swapper_pg_dir |
696 | mts rpid, r0 /* TLB will have 0 TID */ | 694 | mts rpid, r0 /* TLB will have 0 TID */ |
@@ -756,7 +754,6 @@ ex_handler_done: | |||
756 | */ | 754 | */ |
757 | mfs r11, rpid | 755 | mfs r11, rpid |
758 | nop | 756 | nop |
759 | bri 4 | ||
760 | mfs r3, rear /* Get faulting address */ | 757 | mfs r3, rear /* Get faulting address */ |
761 | nop | 758 | nop |
762 | 759 | ||