summaryrefslogtreecommitdiffstats
path: root/sys/sparc64/include/iommuvar.h
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2009-12-23 22:02:34 +0000
committermarius <marius@FreeBSD.org>2009-12-23 22:02:34 +0000
commit200a92842deff95f651004e97350f65fe10d86bf (patch)
tree1434be6c306990412d1b8d433420862809d4a074 /sys/sparc64/include/iommuvar.h
parent2adc434302e7944705405ffa7e3817859494a08c (diff)
downloadFreeBSD-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.h11
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);
OpenPOWER on IntegriCloud