aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/kernel/hw_exception_handler.S
diff options
context:
space:
mode:
authorMichal Simek <monstr@monstr.eu>2010-03-22 15:37:23 -0400
committerMichal Simek <monstr@monstr.eu>2010-04-01 02:38:23 -0400
commit7a6bbdc9304b45cc759e03623cbe63d81aff7337 (patch)
tree42361021652ad0217317d5a7ee4e10f49832d839 /arch/microblaze/kernel/hw_exception_handler.S
parent708e7153d6fc4d2e5fe15c6ccc5d2907fe8a9c8d (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.S9
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