diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-09 19:12:22 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:05 -0500 |
commit | aa9143b9719c07fb6f1f6207790c9c5086ae07e7 (patch) | |
tree | 74d56ecc53ed0542f200d6c6257c8f051095111c /arch/sparc64/kernel/ttable.S | |
parent | 12816ab38adddc9d7e9b3315d1739655dedc7c9f (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/ttable.S')
-rw-r--r-- | arch/sparc64/kernel/ttable.S | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/arch/sparc64/kernel/ttable.S b/arch/sparc64/kernel/ttable.S index 1608ba4bf1c1..a9d210e11eb3 100644 --- a/arch/sparc64/kernel/ttable.S +++ b/arch/sparc64/kernel/ttable.S | |||
@@ -1,7 +1,6 @@ | |||
1 | /* $Id: ttable.S,v 1.38 2002/02/09 19:49:30 davem Exp $ | 1 | /* ttable.S: Sparc V9 Trap Table(s) with SpitFire/Cheetah/SUN4V extensions. |
2 | * ttable.S: Sparc V9 Trap Table(s) with SpitFire/Cheetah extensions. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1996, 2001 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1996, 2001, 2006 David S. Miller (davem@davemloft.net) |
5 | */ | 4 | */ |
6 | 5 | ||
7 | #include <linux/config.h> | 6 | #include <linux/config.h> |
@@ -22,7 +21,8 @@ tl0_iax: membar #Sync | |||
22 | tl0_resv009: BTRAP(0x9) | 21 | tl0_resv009: BTRAP(0x9) |
23 | tl0_iae: membar #Sync | 22 | tl0_iae: membar #Sync |
24 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) | 23 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) |
25 | tl0_resv00b: BTRAP(0xb) BTRAP(0xc) BTRAP(0xd) BTRAP(0xe) BTRAP(0xf) | 24 | tl0_itsb_4v: SUN4V_ITSB_MISS |
25 | tl0_resv00c: BTRAP(0xc) BTRAP(0xd) BTRAP(0xe) BTRAP(0xf) | ||
26 | tl0_ill: membar #Sync | 26 | tl0_ill: membar #Sync |
27 | TRAP_7INSNS(do_illegal_instruction) | 27 | TRAP_7INSNS(do_illegal_instruction) |
28 | tl0_privop: TRAP(do_privop) | 28 | tl0_privop: TRAP(do_privop) |
@@ -38,7 +38,7 @@ tl0_div0: TRAP(do_div0) | |||
38 | tl0_resv029: BTRAP(0x29) BTRAP(0x2a) BTRAP(0x2b) BTRAP(0x2c) BTRAP(0x2d) BTRAP(0x2e) | 38 | tl0_resv029: BTRAP(0x29) BTRAP(0x2a) BTRAP(0x2b) BTRAP(0x2c) BTRAP(0x2d) BTRAP(0x2e) |
39 | tl0_resv02f: BTRAP(0x2f) | 39 | tl0_resv02f: BTRAP(0x2f) |
40 | tl0_dax: TRAP_NOSAVE(__spitfire_data_access_exception) | 40 | tl0_dax: TRAP_NOSAVE(__spitfire_data_access_exception) |
41 | tl0_resv031: BTRAP(0x31) | 41 | tl0_dtsb_4v: SUN4V_DTSB_MISS |
42 | tl0_dae: membar #Sync | 42 | tl0_dae: membar #Sync |
43 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) | 43 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) |
44 | tl0_resv033: BTRAP(0x33) | 44 | tl0_resv033: BTRAP(0x33) |
@@ -185,7 +185,8 @@ tl1_iax: TRAP_NOSAVE(__spitfire_insn_access_exception_tl1) | |||
185 | tl1_resv009: BTRAPTL1(0x9) | 185 | tl1_resv009: BTRAPTL1(0x9) |
186 | tl1_iae: membar #Sync | 186 | tl1_iae: membar #Sync |
187 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) | 187 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) |
188 | tl1_resv00b: BTRAPTL1(0xb) BTRAPTL1(0xc) BTRAPTL1(0xd) BTRAPTL1(0xe) BTRAPTL1(0xf) | 188 | tl1_itsb_4v: SUN4V_ITSB_MISS |
189 | tl1_resv00c: BTRAPTL1(0xc) BTRAPTL1(0xd) BTRAPTL1(0xe) BTRAPTL1(0xf) | ||
189 | tl1_ill: TRAPTL1(do_ill_tl1) | 190 | tl1_ill: TRAPTL1(do_ill_tl1) |
190 | tl1_privop: BTRAPTL1(0x11) | 191 | tl1_privop: BTRAPTL1(0x11) |
191 | tl1_resv012: BTRAPTL1(0x12) BTRAPTL1(0x13) BTRAPTL1(0x14) BTRAPTL1(0x15) | 192 | tl1_resv012: BTRAPTL1(0x12) BTRAPTL1(0x13) BTRAPTL1(0x14) BTRAPTL1(0x15) |
@@ -201,7 +202,7 @@ tl1_div0: TRAPTL1(do_div0_tl1) | |||
201 | tl1_resv029: BTRAPTL1(0x29) BTRAPTL1(0x2a) BTRAPTL1(0x2b) BTRAPTL1(0x2c) | 202 | tl1_resv029: BTRAPTL1(0x29) BTRAPTL1(0x2a) BTRAPTL1(0x2b) BTRAPTL1(0x2c) |
202 | tl1_resv02d: BTRAPTL1(0x2d) BTRAPTL1(0x2e) BTRAPTL1(0x2f) | 203 | tl1_resv02d: BTRAPTL1(0x2d) BTRAPTL1(0x2e) BTRAPTL1(0x2f) |
203 | tl1_dax: TRAP_NOSAVE(__spitfire_data_access_exception_tl1) | 204 | tl1_dax: TRAP_NOSAVE(__spitfire_data_access_exception_tl1) |
204 | tl1_resv031: BTRAPTL1(0x31) | 205 | tl1_dtsb_4v: SUN4V_DTSB_MISS |
205 | tl1_dae: membar #Sync | 206 | tl1_dae: membar #Sync |
206 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) | 207 | TRAP_NOSAVE_7INSNS(__spitfire_access_error) |
207 | tl1_resv033: BTRAPTL1(0x33) | 208 | tl1_resv033: BTRAPTL1(0x33) |