diff options
author | marius <marius@FreeBSD.org> | 2009-12-23 22:02:34 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2009-12-23 22:02:34 +0000 |
commit | 200a92842deff95f651004e97350f65fe10d86bf (patch) | |
tree | 1434be6c306990412d1b8d433420862809d4a074 /sys/sparc64/include/iommuvar.h | |
parent | 2adc434302e7944705405ffa7e3817859494a08c (diff) | |
download | FreeBSD-src-200a92842deff95f651004e97350f65fe10d86bf.zip FreeBSD-src-200a92842deff95f651004e97350f65fe10d86bf.tar.gz |
- Add support for the IOMMUs of Fire JBus to PCIe and Oberon Uranus
to PCIe bridges.
- Add support for talking the PROM mappings over to the kernel IOTSB
just like we do with the kernel TSB in order to allow OFW drivers
to continue to work.
- Change some members, parameters and variables to unsigned where
more appropriate.
Diffstat (limited to 'sys/sparc64/include/iommuvar.h')
-rw-r--r-- | sys/sparc64/include/iommuvar.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/sparc64/include/iommuvar.h b/sys/sparc64/include/iommuvar.h index 5904f04..1ef4e0b 100644 --- a/sys/sparc64/include/iommuvar.h +++ b/sys/sparc64/include/iommuvar.h @@ -66,10 +66,10 @@ struct iommu_state { int is_tsbsize; /* (r) 0 = 8K, ... */ uint64_t is_pmaxaddr; /* (r) max. physical address */ uint64_t is_dvmabase; /* (r) */ - int64_t is_cr; /* (r) Control reg value */ + uint64_t is_cr; /* (r) Control reg value */ vm_paddr_t is_flushpa[2]; /* (r) */ - volatile int64_t *is_flushva[2]; /* (r, *i) */ + volatile uint64_t *is_flushva[2]; /* (r, *i) */ /* * (i) * When a flush is completed, 64 bytes will be stored at the given @@ -99,11 +99,14 @@ struct iommu_state { /* behavior flags */ u_int is_flags; /* (r) */ #define IOMMU_RERUN_DISABLE (1 << 0) +#define IOMMU_FIRE (1 << 1) +#define IOMMU_FLUSH_CACHE (1 << 2) +#define IOMMU_PRESERVE_PROM (1 << 3) }; /* interfaces for PCI/SBus code */ -void iommu_init(const char *name, struct iommu_state *is, int tsbsize, - uint32_t iovabase, int resvpg); +void iommu_init(const char *name, struct iommu_state *is, u_int tsbsize, + uint32_t iovabase, u_int resvpg); void iommu_reset(struct iommu_state *is); void iommu_decode_fault(struct iommu_state *is, vm_offset_t phys); |