Module Name: src Committed By: uebayasi Date: Sun Feb 28 05:03:58 UTC 2010
Modified Files: src/sys/dev [uebayasi-xip]: flash.c src/sys/miscfs/genfs [uebayasi-xip]: genfs_io.c src/sys/sys [uebayasi-xip]: dkio.h Log Message: To mount block devices as XIP, pass physical address "cookie" used by bus_space_mmap(9) / pmap_phys_addr(9) via struct mount. To generate a diff of this commit: cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/dev/flash.c cvs rdiff -u -r1.36.2.2 -r1.36.2.3 src/sys/miscfs/genfs/genfs_io.c cvs rdiff -u -r1.15.2.1 -r1.15.2.2 src/sys/sys/dkio.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/flash.c diff -u src/sys/dev/flash.c:1.1.2.3 src/sys/dev/flash.c:1.1.2.4 --- src/sys/dev/flash.c:1.1.2.3 Sun Feb 28 04:36:27 2010 +++ src/sys/dev/flash.c Sun Feb 28 05:03:58 2010 @@ -1,4 +1,4 @@ -/* $Id: flash.c,v 1.1.2.3 2010/02/28 04:36:27 uebayasi Exp $ */ +/* $Id: flash.c,v 1.1.2.4 2010/02/28 05:03:58 uebayasi Exp $ */ /*- * Copyright (c) 2010 Tsubai Masanari. All rights reserved. @@ -100,7 +100,8 @@ if (sc->sc_addr == 0) error = EINVAL; else - *(paddr_t *)data = sc->sc_addr; + *(paddr_t *)data = bus_space_mmap(sc->sc_iot, + sc->sc_addr, 0, 0/* XXX prot */, BUS_SPACE_MAP_LINEAR); break; #endif Index: src/sys/miscfs/genfs/genfs_io.c diff -u src/sys/miscfs/genfs/genfs_io.c:1.36.2.2 src/sys/miscfs/genfs/genfs_io.c:1.36.2.3 --- src/sys/miscfs/genfs/genfs_io.c:1.36.2.2 Tue Feb 23 07:46:28 2010 +++ src/sys/miscfs/genfs/genfs_io.c Sun Feb 28 05:03:58 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: genfs_io.c,v 1.36.2.2 2010/02/23 07:46:28 uebayasi Exp $ */ +/* $NetBSD: genfs_io.c,v 1.36.2.3 2010/02/28 05:03:58 uebayasi Exp $ */ /* * Copyright (c) 1982, 1986, 1989, 1993 @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.36.2.2 2010/02/23 07:46:28 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.36.2.3 2010/02/28 05:03:58 uebayasi Exp $"); #include "opt_device_page.h" #include "opt_xip.h" @@ -808,7 +808,8 @@ /* unallocated page is redirected to read-only zero-filled page */ phys_addr = uvm_pageofzero_xip_phys_addr(); } else { - phys_addr = vp->v_mount->mnt_phys_addr + + /* bus_space_mmap cookie -> paddr_t */ + phys_addr = pmap_phys_address(vp->v_mount->mnt_phys_addr) + (blkno << dev_bshift) + (off - (lbn << fs_bshift)); } Index: src/sys/sys/dkio.h diff -u src/sys/sys/dkio.h:1.15.2.1 src/sys/sys/dkio.h:1.15.2.2 --- src/sys/sys/dkio.h:1.15.2.1 Thu Feb 11 05:19:35 2010 +++ src/sys/sys/dkio.h Sun Feb 28 05:03:58 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: dkio.h,v 1.15.2.1 2010/02/11 05:19:35 uebayasi Exp $ */ +/* $NetBSD: dkio.h,v 1.15.2.2 2010/02/28 05:03:58 uebayasi Exp $ */ /* * Copyright (c) 1987, 1988, 1993 @@ -105,7 +105,7 @@ /* get disk-info dictionary */ #define DIOCGDISKINFO _IOR('d', 127, struct plistref) - /* get physical address if directly memory-mappable (XIP) */ + /* get physical address cookie if directly memory-mappable (XIP) */ #define DIOCGPHYSADDR _IOR('d', 128, paddr_t) #endif /* _SYS_DKIO_H_ */