diff options
author | Dale Rahn <drahn@cvs.openbsd.org> | 2001-02-16 05:18:07 +0000 |
---|---|---|
committer | Dale Rahn <drahn@cvs.openbsd.org> | 2001-02-16 05:18:07 +0000 |
commit | 2c1cf1b366e07f08ee3937171ff6efab12297406 (patch) | |
tree | 78174eff97031d991536093a40ed3b4f9e466874 /sys | |
parent | 980314a4de8d2809d8c120d23e1068ab3c802c08 (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.c | 10 |
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); |