aboutsummaryrefslogtreecommitdiff
path: root/sys/alpha/include
diff options
context:
space:
mode:
authorBernd Walter <ticso@FreeBSD.org>2005-09-19 13:50:07 +0000
committerBernd Walter <ticso@FreeBSD.org>2005-09-19 13:50:07 +0000
commit0444d5b59a48454e2ad3389c1f078e680c630f24 (patch)
treee5a92c6294c73c413dd73635b6ace4b05147b50f /sys/alpha/include
parent6ed0b39d28f63631f0e6dc1f26b84ec0d8b1d5b4 (diff)
Notes
Diffstat (limited to 'sys/alpha/include')
-rw-r--r--sys/alpha/include/chipset.h11
-rw-r--r--sys/alpha/include/pmap.h13
2 files changed, 21 insertions, 3 deletions
diff --git a/sys/alpha/include/chipset.h b/sys/alpha/include/chipset.h
index 048fbed490001..54031a58f8676 100644
--- a/sys/alpha/include/chipset.h
+++ b/sys/alpha/include/chipset.h
@@ -45,6 +45,17 @@ typedef struct alpha_chipset {
* Scatter-Gather map for ISA dma.
*/
struct sgmap* sgmap;
+
+ /*
+ * Scatter-Gather map for PCI dma.
+ */
+ struct sgmap* pci_sgmap;
+
+ /*
+ * direct map
+ */
+ long dmsize;
+ long dmoffset;
} alpha_chipset_t;
extern alpha_chipset_t chipset;
diff --git a/sys/alpha/include/pmap.h b/sys/alpha/include/pmap.h
index 56c9d6a928110..08c78dced8b0e 100644
--- a/sys/alpha/include/pmap.h
+++ b/sys/alpha/include/pmap.h
@@ -45,6 +45,9 @@
#ifndef _MACHINE_PMAP_H_
#define _MACHINE_PMAP_H_
+#include <machine/chipset.h>
+#include <sys/systm.h>
+
/*
* Define meanings for a few software bits in the pte
*/
@@ -142,12 +145,16 @@ pmap_kextract(vm_offset_t va)
#define vtophys(va) pmap_kextract(((vm_offset_t) (va)))
-extern vm_offset_t alpha_XXX_dmamap_or;
-
static __inline vm_offset_t
alpha_XXX_dmamap(vm_offset_t va)
{
- return (pmap_kextract(va) | alpha_XXX_dmamap_or);
+ vm_offset_t pa = pmap_kextract(va);
+ if (pa >= chipset.dmsize)
+ panic ("driver uses alpha_XXX_dmamap() for an address that"
+ "is not within direct map");
+ if (chipset.pci_sgmap != NULL)
+ panic ("driver uses alpha_XXX_dmamap() on largemem system");
+ return (pa + chipset.dmoffset);
}
#endif /* _KERNEL */