From 59d886ea36d01bc356084ffc456561f7b6083efa Mon Sep 17 00:00:00 2001 From: wpaul Date: Tue, 27 Jul 1999 03:54:48 +0000 Subject: On FreeBSD/i386, when you use the SYS_RES_MEMORY resource to allocate a PCI memory mapped region, rman_get_bushandle() returns what happens to be a kernel virtual address pointing to the base of the PCI shared memory window. However this is not the behavior on all platforms: the only thing you should do with the bushandle is pass it to the bus_spare_read()/bus_space_write() routines. If you actually do want the kernel virtual address of the base of the PCI memory window, you need to use rman_get_virtual(). The problem is that at the moment, rman_get_virtual() returns a physical address, which is bad. In order to get the kernel virtual address we need, we have to play with it a little. Presumeably this behavior will be changed, but in the meantime the Tigon driver won't work. So for the moment, I'm adding a kludge to make things happy on the alpha: the correct kernel virtual address is calculated from the value returned by rman_get_virtual(). This should be removed once rman_get_virtual() starts doing the right thing. This should make the Tigon actuall work on the alpha now. --- sys/pci/if_tireg.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sys/pci/if_tireg.h') diff --git a/sys/pci/if_tireg.h b/sys/pci/if_tireg.h index 65483a2..09b1982 100644 --- a/sys/pci/if_tireg.h +++ b/sys/pci/if_tireg.h @@ -29,7 +29,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: if_tireg.h,v 1.7 1999/07/23 02:17:59 wpaul Exp $ + * $Id: if_tireg.h,v 1.8 1999/07/23 18:46:24 wpaul Exp $ */ /* @@ -1107,6 +1107,7 @@ struct ti_jpool_entry { struct ti_softc { struct arpcom arpcom; /* interface info */ bus_space_handle_t ti_bhandle; + vm_offset_t ti_vhandle; bus_space_tag_t ti_btag; void *ti_intrhand; struct resource *ti_irq; -- cgit v1.1