summaryrefslogtreecommitdiffstats
path: root/arch/openrisc/kernel/head.S
diff options
context:
space:
mode:
authorJonas Bonn2013-02-14 16:16:49 +0100
committerJonas Bonn2013-02-14 16:39:26 +0100
commita81252d75e14cc2cf0ee45078ef143562a0bc279 (patch)
tree7b8bb82ebd471c129788dade8667f4e4fae285dc /arch/openrisc/kernel/head.S
parentopenrisc idle: delete pm_idle (diff)
downloadkernel-qcow2-linux-a81252d75e14cc2cf0ee45078ef143562a0bc279.tar.gz
kernel-qcow2-linux-a81252d75e14cc2cf0ee45078ef143562a0bc279.tar.xz
kernel-qcow2-linux-a81252d75e14cc2cf0ee45078ef143562a0bc279.zip
openrisc: fix up vmalloc page table loading
vmalloc'ed pages are faulted into a process' page tables on demand. In order to facilitate this, do_page_fault needs to know whether it was called via a page fault exception or a TLB-miss exception. This patch adds a wrapper around the _x_page_fault_handler entry points that the TLB-miss exceptions can call into in order to have the relevant parameter set to satisfy do_page_fault. This fixes a bug and is "good enough" for now. That said, this whole handling of vmalloc needs to be audited for correctness at some point. Signed-off-by: Jonas Bonn <jonas@southpole.se>
Diffstat (limited to 'arch/openrisc/kernel/head.S')
-rw-r--r--arch/openrisc/kernel/head.S6
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/openrisc/kernel/head.S b/arch/openrisc/kernel/head.S
index 46aa940ebd20..b357e7f79aca 100644
--- a/arch/openrisc/kernel/head.S
+++ b/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 ]=== */