--- tme/machine/sun2/sun2-mainbus.c 2018/04/24 16:37:52 1.1.1.1 +++ tme/machine/sun2/sun2-mainbus.c 2018/04/24 16:38:51 1.1.1.2 @@ -1,4 +1,4 @@ -/* $Id: sun2-mainbus.c,v 1.1.1.1 2018/04/24 16:37:52 root Exp $ */ +/* $Id: sun2-mainbus.c,v 1.1.1.2 2018/04/24 16:38:51 root Exp $ */ /* machine/sun2/sun2-mainbus.c - implementation of Sun 2 emulation: */ @@ -34,7 +34,7 @@ */ #include -_TME_RCSID("$Id: sun2-mainbus.c,v 1.1.1.1 2018/04/24 16:37:52 root Exp $"); +_TME_RCSID("$Id: sun2-mainbus.c,v 1.1.1.2 2018/04/24 16:38:51 root Exp $"); /* includes: */ #include "sun2-impl.h" @@ -43,18 +43,6 @@ _TME_RCSID("$Id: sun2-mainbus.c,v 1.1.1. #include #include -/* macros: */ - -/* a sun2 mainbus connection: */ -struct tme_sun2_bus_connection { - - /* the generic bus connection: */ - struct tme_bus_connection tme_sun2_bus_connection; - - /* which bus this is: */ - unsigned int tme_sun2_bus_connection_which; -}; - /* this possibly updates that the interrupt priority level driven to the CPU: */ int _tme_sun2_ipl_check(struct tme_sun2 *sun2) @@ -139,7 +127,7 @@ _tme_sun2_bus_signal(struct tme_bus_conn /* reset: */ else if (signal == TME_BUS_SIGNAL_RESET) { - abort(); + /* XXX reset is just ignored for now: */ } /* an interrupt signal: */ @@ -206,6 +194,12 @@ _tme_sun2_bus_intack(struct tme_bus_conn if (rc != ENOENT) { return (rc); } + /* obmem: */ + rc = (*sun2->tme_sun2_obmem->tme_bus_intack) + (sun2->tme_sun2_obmem, signal, vector); + if (rc != ENOENT) { + return (rc); + } if (sun2->tme_sun2_has_vme) { /* VME: */ rc = (*sun2->tme_sun2_vmebus->tme_bus_intack) @@ -549,6 +543,14 @@ _tme_sun2_connections_new(struct tme_ele conn->tme_connection_break = _tme_sun2_connection_break; /* fill in the generic bus connection: */ + if (which_bus == TME_SUN2_BUS_MBMEM) { + conn_bus->tme_bus_subregions.tme_bus_subregion_address_last + = TME_SUN2_DVMA_SIZE_MBMEM; + } + else if (which_bus == TME_SUN2_BUS_VME) { + conn_bus->tme_bus_subregions.tme_bus_subregion_address_last + = TME_SUN2_DVMA_SIZE_VME; + } conn_bus->tme_bus_signal = _tme_sun2_bus_signal; conn_bus->tme_bus_intack = NULL; conn_bus->tme_bus_tlb_set_allocate = _tme_sun2_mmu_tlb_set_allocate;