Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F151678706
D4345.id10663.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
D4345.id10663.diff
View Options
Index: sys/powerpc/booke/pmap.c
===================================================================
--- sys/powerpc/booke/pmap.c
+++ sys/powerpc/booke/pmap.c
@@ -1024,12 +1024,13 @@
static void
mmu_booke_bootstrap(mmu_t mmu, vm_offset_t start, vm_offset_t kernelend)
{
- vm_offset_t phys_kernelend;
+ vm_paddr_t phys_kernelend;
struct mem_region *mp, *mp1;
int cnt, i, j;
- u_int s, e, sz;
+ vm_paddr_t s, e, sz;
+ vm_paddr_t physsz, hwphyssz;
u_int phys_avail_count;
- vm_size_t physsz, hwphyssz, kstack0_sz;
+ vm_size_t kstack0_sz;
vm_offset_t kernel_pdir, kstack0, va;
vm_paddr_t kstack0_phys;
void *dpcpu;
@@ -1163,7 +1164,7 @@
for (mp = availmem_regions; mp->mr_size; mp++) {
s = mp->mr_start;
e = mp->mr_start + mp->mr_size;
- debugf(" %08x-%08x -> ", s, e);
+ debugf(" %09jx-%09jx -> ", (uintmax_t)s, (uintmax_t)e);
/* Check whether this region holds all of the kernel. */
if (s < kernload && e > phys_kernelend) {
availmem_regions[cnt].mr_start = phys_kernelend;
@@ -1188,7 +1189,7 @@
if (e < s)
e = s;
sz = e - s;
- debugf("%08x-%08x = %x\n", s, e, sz);
+ debugf("%09llx-%09llx = %llx\n", s, e, sz);
/* Check whether some memory is left here. */
if (sz == 0) {
@@ -1237,10 +1238,10 @@
for (i = 0, j = 0; i < availmem_regions_sz; i++, j += 2) {
debugf(" region: 0x%jx - 0x%jx (0x%jx)\n",
- availmem_regions[i].mr_start,
- availmem_regions[i].mr_start +
+ (uintmax_t)availmem_regions[i].mr_start,
+ (uintmax_t)availmem_regions[i].mr_start +
availmem_regions[i].mr_size,
- availmem_regions[i].mr_size);
+ (uintmax_t)availmem_regions[i].mr_size);
if (hwphyssz != 0 &&
(physsz + availmem_regions[i].mr_size) >= hwphyssz) {
Index: sys/powerpc/include/param.h
===================================================================
--- sys/powerpc/include/param.h
+++ sys/powerpc/include/param.h
@@ -98,7 +98,7 @@
#define PAGE_SHIFT 12
#define PAGE_SIZE (1L << PAGE_SHIFT) /* Page size */
-#define PAGE_MASK (vm_offset_t)(PAGE_SIZE - 1)
+#define PAGE_MASK (PAGE_SIZE - 1)
#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t)))
#define MAXPAGESIZES 1 /* maximum number of supported page sizes */
@@ -116,15 +116,17 @@
/*
* Mach derived conversion macros
*/
-#define trunc_page(x) ((unsigned long)(x) & ~(PAGE_MASK))
+#define trunc_page(x) ((x) & ~(PAGE_MASK))
#define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK)
-#define atop(x) ((unsigned long)(x) >> PAGE_SHIFT)
-#define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT)
+#define atop(x) ((x) >> PAGE_SHIFT)
+#define ptoa(x) ((x) << PAGE_SHIFT)
-#define powerpc_btop(x) ((unsigned long)(x) >> PAGE_SHIFT)
-#define powerpc_ptob(x) ((unsigned long)(x) << PAGE_SHIFT)
+#define powerpc_btop(x) ((x) >> PAGE_SHIFT)
+#define powerpc_ptob(x) ((x) << PAGE_SHIFT)
#define pgtok(x) ((x) * (PAGE_SIZE / 1024UL))
+#define btoc(x) ((vm_offset_t)(((x)+PAGE_MASK)>>PAGE_SHIFT))
+
#endif /* !_POWERPC_INCLUDE_PARAM_H_ */
Index: sys/powerpc/include/platform.h
===================================================================
--- sys/powerpc/include/platform.h
+++ sys/powerpc/include/platform.h
@@ -39,8 +39,8 @@
#include <machine/pcpu.h>
struct mem_region {
- vm_offset_t mr_start;
- vm_size_t mr_size;
+ uint64_t mr_start;
+ uint64_t mr_size;
};
void mem_regions(struct mem_region **, int *, struct mem_region **, int *);
Index: sys/powerpc/include/pmap.h
===================================================================
--- sys/powerpc/include/pmap.h
+++ sys/powerpc/include/pmap.h
@@ -250,7 +250,7 @@
* For more Ram increase the lmb or this value.
*/
-extern vm_offset_t phys_avail[PHYS_AVAIL_SZ];
+extern vm_paddr_t phys_avail[PHYS_AVAIL_SZ];
extern vm_offset_t virtual_avail;
extern vm_offset_t virtual_end;
Index: sys/powerpc/ofw/ofw_machdep.c
===================================================================
--- sys/powerpc/ofw/ofw_machdep.c
+++ sys/powerpc/ofw/ofw_machdep.c
@@ -171,8 +171,8 @@
i = 0;
j = 0;
while (i < sz/sizeof(cell_t)) {
- #ifndef __powerpc64__
- /* On 32-bit PPC, ignore regions starting above 4 GB */
+ #if !defined(__powerpc64__) && !defined(BOOKE)
+ /* On 32-bit PPC (OEA), ignore regions starting above 4 GB */
if (address_cells > 1 && OFmem[i] > 0) {
i += address_cells + size_cells;
continue;
@@ -181,21 +181,18 @@
output[j].mr_start = OFmem[i++];
if (address_cells == 2) {
- #ifdef __powerpc64__
output[j].mr_start <<= 32;
- #endif
output[j].mr_start += OFmem[i++];
}
output[j].mr_size = OFmem[i++];
if (size_cells == 2) {
- #ifdef __powerpc64__
output[j].mr_size <<= 32;
- #endif
output[j].mr_size += OFmem[i++];
}
- #ifndef __powerpc64__
+ #if !defined(__powerpc64__) && !defined(BOOKE)
+ /* Book-E can support 36-bit addresses. */
/*
* Check for memory regions extending above 32-bit
* memory space, and restrict them to stay there.
Index: sys/powerpc/powerpc/machdep.c
===================================================================
--- sys/powerpc/powerpc/machdep.c
+++ sys/powerpc/powerpc/machdep.c
@@ -176,8 +176,8 @@
#ifdef PERFMON
perfmon_init();
#endif
- printf("real memory = %lu (%lu MB)\n", ptoa(physmem),
- ptoa(physmem) / 1048576);
+ printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)physmem),
+ ptoa((uintmax_t)physmem) / 1048576);
realmem = physmem;
if (bootverbose)
@@ -193,23 +193,25 @@
printf("Physical memory chunk(s):\n");
for (indx = 0; phys_avail[indx + 1] != 0; indx += 2) {
- vm_offset_t size1 =
+ vm_paddr_t size1 =
phys_avail[indx + 1] - phys_avail[indx];
#ifdef __powerpc64__
- printf("0x%016lx - 0x%016lx, %ld bytes (%ld pages)\n",
+ printf("0x%016jx - 0x%016jx, %jd bytes (%jd pages)\n",
#else
- printf("0x%08x - 0x%08x, %u bytes (%lu pages)\n",
+ printf("0x%09jx - 0x%09jx, %ju bytes (%ju pages)\n",
#endif
- phys_avail[indx], phys_avail[indx + 1] - 1, size1,
- size1 / PAGE_SIZE);
+ (uintmax_t)phys_avail[indx],
+ (uintmax_t)phys_avail[indx + 1] - 1,
+ (uintmax_t)size1, (uintmax_t)size1 / PAGE_SIZE);
}
}
vm_ksubmap_init(&kmi);
- printf("avail memory = %lu (%lu MB)\n", ptoa(vm_cnt.v_free_count),
- ptoa(vm_cnt.v_free_count) / 1048576);
+ printf("avail memory = %ju (%ju MB)\n",
+ ptoa((uintmax_t)vm_cnt.v_free_count),
+ ptoa((uintmax_t)vm_cnt.v_free_count) / 1048576);
/*
* Set up buffers, so they can be used to read disk labels.
Index: sys/powerpc/powerpc/platform.c
===================================================================
--- sys/powerpc/powerpc/platform.c
+++ sys/powerpc/powerpc/platform.c
@@ -86,8 +86,8 @@
memr_merge(struct mem_region *from, struct mem_region *to)
{
vm_offset_t end;
- end = ulmax(to->mr_start + to->mr_size, from->mr_start + from->mr_size);
- to->mr_start = ulmin(from->mr_start, to->mr_start);
+ end = uqmax(to->mr_start + to->mr_size, from->mr_start + from->mr_size);
+ to->mr_start = uqmin(from->mr_start, to->mr_start);
to->mr_size = end - to->mr_start;
}
Index: sys/powerpc/powerpc/pmap_dispatch.c
===================================================================
--- sys/powerpc/powerpc/pmap_dispatch.c
+++ sys/powerpc/powerpc/pmap_dispatch.c
@@ -74,7 +74,7 @@
vm_offset_t msgbuf_phys;
vm_offset_t kernel_vm_end;
-vm_offset_t phys_avail[PHYS_AVAIL_SZ];
+vm_paddr_t phys_avail[PHYS_AVAIL_SZ];
vm_offset_t virtual_avail;
vm_offset_t virtual_end;
Index: sys/sys/libkern.h
===================================================================
--- sys/sys/libkern.h
+++ sys/sys/libkern.h
@@ -61,6 +61,8 @@
static __inline u_int min(u_int a, u_int b) { return (a < b ? a : b); }
static __inline quad_t qmax(quad_t a, quad_t b) { return (a > b ? a : b); }
static __inline quad_t qmin(quad_t a, quad_t b) { return (a < b ? a : b); }
+static __inline u_quad_t uqmax(u_quad_t a, u_quad_t b) { return (a > b ? a : b); }
+static __inline u_quad_t uqmin(u_quad_t a, u_quad_t b) { return (a < b ? a : b); }
static __inline u_long ulmax(u_long a, u_long b) { return (a > b ? a : b); }
static __inline u_long ulmin(u_long a, u_long b) { return (a < b ? a : b); }
static __inline off_t omax(off_t a, off_t b) { return (a > b ? a : b); }
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 10, 11:23 PM (13 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31253245
Default Alt Text
D4345.id10663.diff (8 KB)
Attached To
Mode
D4345: Extend Book-E to support >4GB RAM
Attached
Detach File
Event Timeline
Log In to Comment