Am 08.05.2015 um 23:59 schrieb Christos Zoulas:
But still it should not jump to NULL...
While plowing through the code regarding this, I saw something else
that could be a missing break in a case statement in vsbus.c,
vsbus_attach().
At least there is no /* FALLTHROUGH */ (anymore) as would be required
by KNF. Change vsbus.c r1.23 -> r1.24 looks strange...
If this turns out to be an issue, VAXstations 4000 VLC and m60 (KA48
and KA46) would be affected.
Are there any known problems with those machines?
I have a VS 4000/60, too, and could test this, but wouldn't know how
to trigger a possible problem.
switch (vax_boardtype) {
#if VAX49 || VAX53
case VAX_BTYP_53:
case VAX_BTYP_49:
sc->sc_vsregs = vax_map_physmem(VS_REGS_KA49, 1);
sc->sc_intreq = (char *)sc->sc_vsregs + 12;
sc->sc_intclr = (char *)sc->sc_vsregs + 12;
sc->sc_intmsk = (char *)sc->sc_vsregs + 8;
vsbus_dma_init(sc, 8192);
break;
#endif
#if VAX46 || VAX48
case VAX_BTYP_48:
case VAX_BTYP_46:
sc->sc_vsregs = vax_map_physmem(VS_REGS, 1);
sc->sc_intreq = (char *)sc->sc_vsregs + 15;
sc->sc_intclr = (char *)sc->sc_vsregs + 15;
sc->sc_intmsk = (char *)sc->sc_vsregs + 12;
vsbus_dma_init(sc, 32768);
#endif
default:
sc->sc_vsregs = vax_map_physmem(VS_REGS, 1);
sc->sc_intreq = (char *)sc->sc_vsregs + 15;
sc->sc_intclr = (char *)sc->sc_vsregs + 15;
sc->sc_intmsk = (char *)sc->sc_vsregs + 12;
[...]