summaryrefslogtreecommitdiffstats
path: root/arch/sparc64/kernel/tsb.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-09 16:12:22 -0800
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 01:12:05 -0800
commitaa9143b9719c07fb6f1f6207790c9c5086ae07e7 (patch)
tree74d56ecc53ed0542f200d6c6257c8f051095111c /arch/sparc64/kernel/tsb.S
parent12816ab38adddc9d7e9b3315d1739655dedc7c9f (diff)
downloadlinux-aa9143b9719c07fb6f1f6207790c9c5086ae07e7.tar.bz2
[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:
nop
/* The sun4v TLB miss handlers jump directly here instead
- * of tsb_miss_{d,i}tlb with the missing virtual address
- * already loaded into %g4.
+ * of tsb_miss_{d,i}tlb with registers setup as follows:
+ *
+ * %g4: missing virtual address
+ * %g1: TSB entry address loaded
+ * %g6: TAG TARGET ((vaddr >> 22) | (ctx << 48))
*/
tsb_miss_page_table_walk:
TRAP_LOAD_PGD_PHYS(%g7, %g5)