From c055c7980e06ae935c58238e098fdf98361fd5b5 Mon Sep 17 00:00:00 2001 From: Jonas Bonn Date: Thu, 14 Feb 2013 16:16:49 +0100 Subject: [PATCH] --- yaml --- r: 359119 b: refs/heads/master c: a81252d75e14cc2cf0ee45078ef143562a0bc279 h: refs/heads/master i: 359117: 80cc32a1ad093f0176024981b975194d56f354c5 359115: 0ce0ad7d19a198d03575339ff19c9742db5fcf20 359111: f1d237c88832719aa84cc9549be5a85350ffa091 359103: b555320ed9e4c1e43d23fbf5462f43b31c255b2f v: v3 --- [refs] | 2 +- trunk/arch/openrisc/kernel/entry.S | 14 ++++++++++++-- trunk/arch/openrisc/kernel/head.S | 6 ++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index dd218ae1d2e1..d8aa160e2048 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7f81ea7e28c3e4e5b762111dc676b24152f85a3a +refs/heads/master: a81252d75e14cc2cf0ee45078ef143562a0bc279 diff --git a/trunk/arch/openrisc/kernel/entry.S b/trunk/arch/openrisc/kernel/entry.S index 5e5b30601bbf..3de971224cfc 100644 --- a/trunk/arch/openrisc/kernel/entry.S +++ b/trunk/arch/openrisc/kernel/entry.S @@ -201,12 +201,17 @@ EXCEPTION_ENTRY(_bus_fault_handler) l.nop /* ---[ 0x300: Data Page Fault exception ]------------------------------- */ +EXCEPTION_ENTRY(_dtlb_miss_page_fault_handler) + l.and r5,r5,r0 + l.j 1f + l.nop EXCEPTION_ENTRY(_data_page_fault_handler) /* set up parameters for do_page_fault */ + l.ori r5,r0,0x300 // exception vector +1: l.addi r3,r1,0 // pt_regs /* r4 set be EXCEPTION_HANDLE */ // effective address of fault - l.ori r5,r0,0x300 // exception vector /* * __PHX__: TODO @@ -276,12 +281,17 @@ EXCEPTION_ENTRY(_data_page_fault_handler) l.nop /* ---[ 0x400: Insn Page Fault exception ]------------------------------- */ +EXCEPTION_ENTRY(_itlb_miss_page_fault_handler) + l.and r5,r5,r0 + l.j 1f + l.nop EXCEPTION_ENTRY(_insn_page_fault_handler) /* set up parameters for do_page_fault */ + l.ori r5,r0,0x400 // exception vector +1: l.addi r3,r1,0 // pt_regs /* r4 set be EXCEPTION_HANDLE */ // effective address of fault - l.ori r5,r0,0x400 // exception vector l.ori r6,r0,0x0 // !write access /* call fault.c handler in or32/mm/fault.c */ diff --git a/trunk/arch/openrisc/kernel/head.S b/trunk/arch/openrisc/kernel/head.S index 46aa940ebd20..b357e7f79aca 100644 --- a/trunk/arch/openrisc/kernel/head.S +++ b/trunk/arch/openrisc/kernel/head.S @@ -1069,8 +1069,7 @@ d_pte_not_present: EXCEPTION_LOAD_GPR4 EXCEPTION_LOAD_GPR5 EXCEPTION_LOAD_GPR6 - l.j _dispatch_do_dpage_fault - l.nop + EXCEPTION_HANDLE(_dtlb_miss_page_fault_handler) /* ==============================================[ ITLB miss handler ]=== */ ENTRY(itlb_miss_handler) @@ -1192,8 +1191,7 @@ i_pte_not_present: EXCEPTION_LOAD_GPR4 EXCEPTION_LOAD_GPR5 EXCEPTION_LOAD_GPR6 - l.j _dispatch_do_ipage_fault - l.nop + EXCEPTION_HANDLE(_itlb_miss_page_fault_handler) /* ==============================================[ boot tlb handlers ]=== */