diff options
author | David S. Miller <davem@davemloft.net> | 2014-09-27 00:19:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-05 19:53:38 -0400 |
commit | ac55c768143aa34cc3789c4820cbb0809a76fd9c (patch) | |
tree | f6bb7af5b71e7935169a778e3f7e7694fbd1416f /arch/sparc/include/asm/tsb.h | |
parent | 473ad7f4fb005d1bb727e4ef27d370d28703a062 (diff) |
sparc64: Switch to 4-level page tables.
This has become necessary with chips that support more than 43-bits
of physical addressing.
Based almost entirely upon a patch by Bob Picco.
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Bob Picco <bob.picco@oracle.com>
Diffstat (limited to 'arch/sparc/include/asm/tsb.h')
-rw-r--r-- | arch/sparc/include/asm/tsb.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/sparc/include/asm/tsb.h b/arch/sparc/include/asm/tsb.h index 90916f955cac..2e268b646348 100644 --- a/arch/sparc/include/asm/tsb.h +++ b/arch/sparc/include/asm/tsb.h | |||
@@ -145,6 +145,11 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end; | |||
145 | andn REG2, 0x7, REG2; \ | 145 | andn REG2, 0x7, REG2; \ |
146 | ldx [REG1 + REG2], REG1; \ | 146 | ldx [REG1 + REG2], REG1; \ |
147 | brz,pn REG1, FAIL_LABEL; \ | 147 | brz,pn REG1, FAIL_LABEL; \ |
148 | sllx VADDR, 64 - (PUD_SHIFT + PUD_BITS), REG2; \ | ||
149 | srlx REG2, 64 - PAGE_SHIFT, REG2; \ | ||
150 | andn REG2, 0x7, REG2; \ | ||
151 | ldxa [REG1 + REG2] ASI_PHYS_USE_EC, REG1; \ | ||
152 | brz,pn REG1, FAIL_LABEL; \ | ||
148 | sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ | 153 | sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ |
149 | srlx REG2, 64 - PAGE_SHIFT, REG2; \ | 154 | srlx REG2, 64 - PAGE_SHIFT, REG2; \ |
150 | andn REG2, 0x7, REG2; \ | 155 | andn REG2, 0x7, REG2; \ |
@@ -198,6 +203,11 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end; | |||
198 | andn REG2, 0x7, REG2; \ | 203 | andn REG2, 0x7, REG2; \ |
199 | ldxa [PHYS_PGD + REG2] ASI_PHYS_USE_EC, REG1; \ | 204 | ldxa [PHYS_PGD + REG2] ASI_PHYS_USE_EC, REG1; \ |
200 | brz,pn REG1, FAIL_LABEL; \ | 205 | brz,pn REG1, FAIL_LABEL; \ |
206 | sllx VADDR, 64 - (PUD_SHIFT + PUD_BITS), REG2; \ | ||
207 | srlx REG2, 64 - PAGE_SHIFT, REG2; \ | ||
208 | andn REG2, 0x7, REG2; \ | ||
209 | ldxa [REG1 + REG2] ASI_PHYS_USE_EC, REG1; \ | ||
210 | brz,pn REG1, FAIL_LABEL; \ | ||
201 | sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ | 211 | sllx VADDR, 64 - (PMD_SHIFT + PMD_BITS), REG2; \ |
202 | srlx REG2, 64 - PAGE_SHIFT, REG2; \ | 212 | srlx REG2, 64 - PAGE_SHIFT, REG2; \ |
203 | andn REG2, 0x7, REG2; \ | 213 | andn REG2, 0x7, REG2; \ |