aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/tsb.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-09 19:12:22 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:12:05 -0500
commitaa9143b9719c07fb6f1f6207790c9c5086ae07e7 (patch)
tree74d56ecc53ed0542f200d6c6257c8f051095111c /arch/sparc64/kernel/tsb.S
parent12816ab38adddc9d7e9b3315d1739655dedc7c9f (diff)
[SPARC64]: Implement sun4v TSB miss handlers.
When we register a TSB with the hypervisor, so that it or hardware can handle TLB misses and do the TSB walk for us, the hypervisor traps down to these trap when it incurs a TSB miss. Processing is simple, we load the missing virtual address and context, and do a full page table walk. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/tsb.S')
-rw-r--r--arch/sparc64/kernel/tsb.S7
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/sparc64/kernel/tsb.S b/arch/sparc64/kernel/tsb.S
index 819a6ef9799f..c848c8847cdc 100644
--- a/arch/sparc64/kernel/tsb.S
+++ b/arch/sparc64/kernel/tsb.S
@@ -35,8 +35,11 @@ tsb_miss_itlb:
35 nop 35 nop
36 36
37 /* The sun4v TLB miss handlers jump directly here instead 37 /* The sun4v TLB miss handlers jump directly here instead
38 * of tsb_miss_{d,i}tlb with the missing virtual address 38 * of tsb_miss_{d,i}tlb with registers setup as follows:
39 * already loaded into %g4. 39 *
40 * %g4: missing virtual address
41 * %g1: TSB entry address loaded
42 * %g6: TAG TARGET ((vaddr >> 22) | (ctx << 48))
40 */ 43 */
41tsb_miss_page_table_walk: 44tsb_miss_page_table_walk:
42 TRAP_LOAD_PGD_PHYS(%g7, %g5) 45 TRAP_LOAD_PGD_PHYS(%g7, %g5)