diff options
author | andrew <andrew@FreeBSD.org> | 2012-09-23 02:01:59 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2012-09-23 02:01:59 +0000 |
commit | d9ebf06192583d13a8f9b61c12451be1e98c3984 (patch) | |
tree | 959b1a2a5779b376225fa88662a9c23766a16899 /sys/arm/lpc/lpc_machdep.c | |
parent | 32eb506f225e2b85e47ea826ddccfaf600657810 (diff) | |
download | FreeBSD-src-d9ebf06192583d13a8f9b61c12451be1e98c3984.zip FreeBSD-src-d9ebf06192583d13a8f9b61c12451be1e98c3984.tar.gz |
Update different versions of physmap_init to be identical in preparation
for merging them.
Diffstat (limited to 'sys/arm/lpc/lpc_machdep.c')
-rw-r--r-- | sys/arm/lpc/lpc_machdep.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/sys/arm/lpc/lpc_machdep.c b/sys/arm/lpc/lpc_machdep.c index 6efc3cf..b286f6d 100644 --- a/sys/arm/lpc/lpc_machdep.c +++ b/sys/arm/lpc/lpc_machdep.c @@ -282,9 +282,19 @@ physmap_init(void) availmem_regions[i].mr_start + availmem_regions[i].mr_size, availmem_regions[i].mr_size); - phys_avail[j] = availmem_regions[i].mr_start; - phys_avail[j + 1] = availmem_regions[i].mr_start + - availmem_regions[i].mr_size; + /* + * We should not map the page at PA 0x0000000, the VM can't + * handle it, as pmap_extract() == 0 means failure. + */ + if (availmem_regions[i].mr_start > 0 || + availmem_regions[i].mr_size > PAGE_SIZE) { + phys_avail[j] = availmem_regions[i].mr_start; + if (phys_avail[j] == 0) + phys_avail[j] += PAGE_SIZE; + phys_avail[j + 1] = availmem_regions[i].mr_start + + availmem_regions[i].mr_size; + } else + j -= 2; } phys_avail[j] = 0; phys_avail[j + 1] = 0; |