summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2001-02-16 05:18:07 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2001-02-16 05:18:07 +0000
commit2c1cf1b366e07f08ee3937171ff6efab12297406 (patch)
tree78174eff97031d991536093a40ed3b4f9e466874 /sys
parent980314a4de8d2809d8c120d23e1068ab3c802c08 (diff)
Allow siop driver to work on powerpc.
pmap_extract should work for all accessable memory. Since powerpc maps the kernel va=pa without using the pte table, these addresses need to be handled seperately.
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/powerpc/powerpc/pmap.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/arch/powerpc/powerpc/pmap.c b/sys/arch/powerpc/powerpc/pmap.c
index 20dc2b556c7..9a2908b3832 100644
--- a/sys/arch/powerpc/powerpc/pmap.c
+++ b/sys/arch/powerpc/powerpc/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.21 2001/01/24 21:23:05 drahn Exp $ */
+/* $OpenBSD: pmap.c,v 1.22 2001/02/16 05:18:06 drahn Exp $ */
/* $NetBSD: pmap.c,v 1.1 1996/09/30 16:34:52 ws Exp $ */
/*
@@ -1329,8 +1329,14 @@ pmap_extract(pm, va)
int s = splimp();
if (!(ptp = pte_find(pm, va))) {
+ /* return address 0 if not mapped??? */
+ o = 0;
+ if (pm == pmap_kernel() && va < 0x80000000){
+ /* if in kernel, va==pa for 0 - 0x80000000 */
+ o = va;
+ }
splx(s);
- return 0;
+ return o;
}
o = (ptp->pte_lo & PTE_RPGN) | (va & ADDR_POFF);
splx(s);