summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/include
diff options
context:
space:
mode:
authorian <ian@FreeBSD.org>2014-05-14 00:51:26 +0000
committerian <ian@FreeBSD.org>2014-05-14 00:51:26 +0000
commit2963fd0dfbdafac049cadecf0774e0c027b28c88 (patch)
tree0a7f6d9dda09a9467d9629cbd1d020b502dc6dad /sys/powerpc/include
parent065f33ceeaaf9a1809785180d2f3b30a66d52a40 (diff)
downloadFreeBSD-src-2963fd0dfbdafac049cadecf0774e0c027b28c88.zip
FreeBSD-src-2963fd0dfbdafac049cadecf0774e0c027b28c88.tar.gz
MFC r257161, r257169, r257178, r257190, r257191
Add pmap_mapdev_attr() and pmap_kenter_attr() interfaces. Fix concurrency issues with TLB1 updates and make pmap_kextract() search TLB1 mappings as well Interrelated improvements to early boot mappings: - Remove explicit requirement that the SOC registers be found except as an optimization (although the MPC85XX LAW drivers still require they be found externally, which should change). - Remove magic CCSRBAR_VA value. - Allow bus_machdep.c's early-boot code to handle non 1:1 mappings and systems not in real-mode or global 1:1 maps in early boot. - Allow pmap_mapdev() on Book-E to reissue previous addresses if the area is already mapped. Additionally have it check all mappings, not just the CCSR area. Add some extra sanity checking and checks to printf format specifiers. Bump initial TLB size. The kernel is not necessarily less than 16 MB Handle (in a slightly ugly way) ePAPR-type loaders that just place a device tree into r3.
Diffstat (limited to 'sys/powerpc/include')
-rw-r--r--sys/powerpc/include/pmap.h2
-rw-r--r--sys/powerpc/include/tlb.h5
-rw-r--r--sys/powerpc/include/vmparam.h6
3 files changed, 6 insertions, 7 deletions
diff --git a/sys/powerpc/include/pmap.h b/sys/powerpc/include/pmap.h
index 4b1f4f6..2c9c786 100644
--- a/sys/powerpc/include/pmap.h
+++ b/sys/powerpc/include/pmap.h
@@ -258,6 +258,8 @@ extern void pmap_dumpsys_unmap(struct pmap_md *, vm_size_t, vm_offset_t);
extern struct pmap_md *pmap_scan_md(struct pmap_md *);
+vm_offset_t pmap_early_io_map(vm_paddr_t pa, vm_size_t size);
+
#endif
#endif /* !_MACHINE_PMAP_H_ */
diff --git a/sys/powerpc/include/tlb.h b/sys/powerpc/include/tlb.h
index 7e0d909..58a1a01 100644
--- a/sys/powerpc/include/tlb.h
+++ b/sys/powerpc/include/tlb.h
@@ -126,6 +126,9 @@
#if !defined(LOCORE)
typedef struct tlb_entry {
+ vm_paddr_t phys;
+ vm_offset_t virt;
+ vm_size_t size;
uint32_t mas1;
uint32_t mas2;
uint32_t mas3;
@@ -134,7 +137,7 @@ typedef struct tlb_entry {
void tlb0_print_tlbentries(void);
void tlb1_inval_entry(unsigned int);
-void tlb1_init(vm_offset_t);
+void tlb1_init(void);
void tlb1_print_entries(void);
void tlb1_print_tlbentries(void);
#endif /* !LOCORE */
diff --git a/sys/powerpc/include/vmparam.h b/sys/powerpc/include/vmparam.h
index 5a29796..0b12933 100644
--- a/sys/powerpc/include/vmparam.h
+++ b/sys/powerpc/include/vmparam.h
@@ -108,12 +108,6 @@
#else /* Book-E */
-/*
- * Kernel CCSRBAR location. We make this the reset location.
- */
-#define CCSRBAR_VA 0xfef00000
-#define CCSRBAR_SIZE 0x00100000
-
#define KERNBASE 0xc0000000 /* start of kernel virtual */
#define VM_MIN_KERNEL_ADDRESS KERNBASE
OpenPOWER on IntegriCloud