aboutsummaryrefslogtreecommitdiff
path: root/sys/sparc64
diff options
context:
space:
mode:
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/include/metadata.h5
-rw-r--r--sys/sparc64/include/tlb.h4
-rw-r--r--sys/sparc64/sparc64/machdep.c4
-rw-r--r--sys/sparc64/sparc64/pmap.c5
4 files changed, 13 insertions, 5 deletions
diff --git a/sys/sparc64/include/metadata.h b/sys/sparc64/include/metadata.h
index 11f99c7f4be0..a475403f9e60 100644
--- a/sys/sparc64/include/metadata.h
+++ b/sys/sparc64/include/metadata.h
@@ -37,6 +37,11 @@
#define MODINFOMD_DTLB 0x1006
#define MODINFOMD_ITLB 0x1007
+struct tlb_entry {
+ vm_offset_t te_pa;
+ vm_offset_t te_va;
+};
+
#define MD_FETCH(mdp, info, type) ({ \
type *__p; \
__p = (type *)preload_search_info((mdp), MODINFO_METADATA | (info)); \
diff --git a/sys/sparc64/include/tlb.h b/sys/sparc64/include/tlb.h
index d92af311d594..126af86a25fa 100644
--- a/sys/sparc64/include/tlb.h
+++ b/sys/sparc64/include/tlb.h
@@ -80,8 +80,10 @@
#define MMU_SFSR_W (1L << MMU_SFSR_W_SHIFT)
+struct tlb_entry;
+
extern int kernel_tlb_slots;
-extern struct tte *kernel_ttes;
+extern struct tlb_entry *kernel_tlbs;
void tlb_context_demap(struct pmap *pm);
void tlb_page_demap(u_int tlb, struct pmap *pm, vm_offset_t va);
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index 962929b64066..477e7457c6ac 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -107,7 +107,7 @@
typedef int ofw_vec_t(void *);
-struct tte *kernel_ttes;
+struct tlb_entry *kernel_tlbs;
int kernel_tlb_slots;
int physmem;
@@ -229,7 +229,7 @@ sparc64_init(caddr_t mdp, u_long o1, u_long o2, u_long o3, ofw_vec_t *vec)
end = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t);
kernel_tlb_slots = MD_FETCH(kmdp, MODINFOMD_DTLB_SLOTS,
int);
- kernel_ttes = (struct tte *)preload_search_info(kmdp,
+ kernel_tlbs = (void *)preload_search_info(kmdp,
MODINFO_METADATA | MODINFOMD_DTLB);
}
}
diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c
index 27b4ae2dc224..8ef2eb8b57ba 100644
--- a/sys/sparc64/sparc64/pmap.c
+++ b/sys/sparc64/sparc64/pmap.c
@@ -94,6 +94,7 @@
#include <machine/cache.h>
#include <machine/frame.h>
#include <machine/md_var.h>
+#include <machine/metadata.h>
#include <machine/pv.h>
#include <machine/smp.h>
#include <machine/tlb.h>
@@ -310,8 +311,8 @@ pmap_bootstrap(vm_offset_t ekva)
* pmap_kextract() will work for them.
*/
for (i = 0; i < kernel_tlb_slots; i++) {
- va = TTE_GET_VA(&kernel_ttes[i]);
- pa = TTE_GET_PA(&kernel_ttes[i]);
+ pa = kernel_tlbs[i].te_pa;
+ va = kernel_tlbs[i].te_va;
for (off = 0; off < PAGE_SIZE_4M; off += PAGE_SIZE) {
tp = tsb_kvtotte(va + off);
tp->tte_vpn = TV_VPN(va + off);