diff options
Diffstat (limited to 'sys/arm64/arm64/gic_v3_var.h')
-rw-r--r-- | sys/arm64/arm64/gic_v3_var.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/sys/arm64/arm64/gic_v3_var.h b/sys/arm64/arm64/gic_v3_var.h index 7722a48cb456..81526e7cc15e 100644 --- a/sys/arm64/arm64/gic_v3_var.h +++ b/sys/arm64/arm64/gic_v3_var.h @@ -24,8 +24,6 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef _GIC_V3_VAR_H_ @@ -40,8 +38,9 @@ DECLARE_CLASS(gic_v3_driver); struct gic_v3_irqsrc; struct redist_pcpu { - struct resource res; /* mem resource for redist */ + struct resource *res; /* mem resource for redist */ vm_offset_t pend_base; + bus_size_t offset; bool lpi_enabled; /* redist LPI configured? */ }; @@ -55,7 +54,7 @@ struct gic_redists { /* Number of Re-Distributor regions */ u_int nregions; /* Per-CPU Re-Distributor data */ - struct redist_pcpu *pcpu[MAXCPU]; + struct redist_pcpu *pcpu; }; struct gic_v3_softc { @@ -84,11 +83,15 @@ struct gic_v3_softc { device_t *gic_children; struct intr_pic *gic_pic; struct gic_v3_irqsrc *gic_irqs; + + int nranges; + struct arm_gic_range * ranges; }; struct gic_v3_devinfo { int gic_domain; int msi_xref; + int is_vgic; }; #define GIC_INTR_ISRC(sc, irq) (&sc->gic_irqs[irq].gi_isrc) @@ -133,8 +136,8 @@ void gic_r_write_8(device_t, bus_size_t, uint64_t var); u_int cpu = PCPU_GET(cpuid); \ \ bus_read_##len( \ - &sc->gic_redists.pcpu[cpu]->res, \ - reg); \ + (sc)->gic_redists.pcpu[cpu].res, \ + (sc)->gic_redists.pcpu[cpu].offset + (reg)); \ }) #define gic_r_write(sc, len, reg, val) \ @@ -142,8 +145,9 @@ void gic_r_write_8(device_t, bus_size_t, uint64_t var); u_int cpu = PCPU_GET(cpuid); \ \ bus_write_##len( \ - &sc->gic_redists.pcpu[cpu]->res, \ - reg, val); \ + (sc)->gic_redists.pcpu[cpu].res, \ + (sc)->gic_redists.pcpu[cpu].offset + (reg), \ + (val)); \ }) #endif /* _GIC_V3_VAR_H_ */ |