diff options
| author | Bernd Walter <ticso@FreeBSD.org> | 2005-09-19 13:50:07 +0000 |
|---|---|---|
| committer | Bernd Walter <ticso@FreeBSD.org> | 2005-09-19 13:50:07 +0000 |
| commit | 0444d5b59a48454e2ad3389c1f078e680c630f24 (patch) | |
| tree | e5a92c6294c73c413dd73635b6ace4b05147b50f /sys/alpha/include | |
| parent | 6ed0b39d28f63631f0e6dc1f26b84ec0d8b1d5b4 (diff) | |
Notes
Diffstat (limited to 'sys/alpha/include')
| -rw-r--r-- | sys/alpha/include/chipset.h | 11 | ||||
| -rw-r--r-- | sys/alpha/include/pmap.h | 13 |
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 */ |
