|
@@ -256,8 +256,6 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end;
|
|
|
(KERNEL_TSB_SIZE_BYTES / 16)
|
|
|
#define KERNEL_TSB4M_NENTRIES 4096
|
|
|
|
|
|
-#define KTSB_PHYS_SHIFT 15
|
|
|
-
|
|
|
/* Do a kernel TSB lookup at tl>0 on VADDR+TAG, branch to OK_LABEL
|
|
|
* on TSB hit. REG1, REG2, REG3, and REG4 are used as temporaries
|
|
|
* and the found TTE will be left in REG1. REG3 and REG4 must
|
|
@@ -266,17 +264,15 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end;
|
|
|
* VADDR and TAG will be preserved and not clobbered by this macro.
|
|
|
*/
|
|
|
#define KERN_TSB_LOOKUP_TL1(VADDR, TAG, REG1, REG2, REG3, REG4, OK_LABEL) \
|
|
|
-661: sethi %hi(swapper_tsb), REG1; \
|
|
|
- or REG1, %lo(swapper_tsb), REG1; \
|
|
|
+661: sethi %uhi(swapper_tsb), REG1; \
|
|
|
+ sethi %hi(swapper_tsb), REG2; \
|
|
|
+ or REG1, %ulo(swapper_tsb), REG1; \
|
|
|
+ or REG2, %lo(swapper_tsb), REG2; \
|
|
|
.section .swapper_tsb_phys_patch, "ax"; \
|
|
|
.word 661b; \
|
|
|
.previous; \
|
|
|
-661: nop; \
|
|
|
- .section .tsb_ldquad_phys_patch, "ax"; \
|
|
|
- .word 661b; \
|
|
|
- sllx REG1, KTSB_PHYS_SHIFT, REG1; \
|
|
|
- sllx REG1, KTSB_PHYS_SHIFT, REG1; \
|
|
|
- .previous; \
|
|
|
+ sllx REG1, 32, REG1; \
|
|
|
+ or REG1, REG2, REG1; \
|
|
|
srlx VADDR, PAGE_SHIFT, REG2; \
|
|
|
and REG2, (KERNEL_TSB_NENTRIES - 1), REG2; \
|
|
|
sllx REG2, 4, REG2; \
|
|
@@ -291,17 +287,15 @@ extern struct tsb_phys_patch_entry __tsb_phys_patch, __tsb_phys_patch_end;
|
|
|
* we can make use of that for the index computation.
|
|
|
*/
|
|
|
#define KERN_TSB4M_LOOKUP_TL1(TAG, REG1, REG2, REG3, REG4, OK_LABEL) \
|
|
|
-661: sethi %hi(swapper_4m_tsb), REG1; \
|
|
|
- or REG1, %lo(swapper_4m_tsb), REG1; \
|
|
|
+661: sethi %uhi(swapper_4m_tsb), REG1; \
|
|
|
+ sethi %hi(swapper_4m_tsb), REG2; \
|
|
|
+ or REG1, %ulo(swapper_4m_tsb), REG1; \
|
|
|
+ or REG2, %lo(swapper_4m_tsb), REG2; \
|
|
|
.section .swapper_4m_tsb_phys_patch, "ax"; \
|
|
|
.word 661b; \
|
|
|
.previous; \
|
|
|
-661: nop; \
|
|
|
- .section .tsb_ldquad_phys_patch, "ax"; \
|
|
|
- .word 661b; \
|
|
|
- sllx REG1, KTSB_PHYS_SHIFT, REG1; \
|
|
|
- sllx REG1, KTSB_PHYS_SHIFT, REG1; \
|
|
|
- .previous; \
|
|
|
+ sllx REG1, 32, REG1; \
|
|
|
+ or REG1, REG2, REG1; \
|
|
|
and TAG, (KERNEL_TSB4M_NENTRIES - 1), REG2; \
|
|
|
sllx REG2, 4, REG2; \
|
|
|
add REG1, REG2, REG2; \
|