Revision a343df16 hw/ne2000.c

b/hw/ne2000.c
61 61
#define EN1_CURPAG      0x17
62 62
#define EN1_MULT        0x18
63 63

  
64
#define EN2_STARTPG	0x21	/* Starting page of ring bfr RD */
65
#define EN2_STOPPG	0x22	/* Ending page +1 of ring bfr RD */
66

  
64 67
/*  Register accessed at EN_CMD, the 8390 base addr.  */
65 68
#define E8390_STOP	0x01	/* Stop and reset the chip */
66 69
#define E8390_START	0x02	/* Start the chip, clear reset */
......
150 153
static void ne2000_update_irq(NE2000State *s)
151 154
{
152 155
    int isr;
153
    isr = s->isr & s->imr;
156
    isr = (s->isr & s->imr) & 0x7f;
154 157
#if defined(DEBUG_NE2000)
155 158
    printf("NE2000: Set IRQ line %d to %d (%02x %02x)\n",
156 159
	   s->irq, isr ? 1 : 0, s->isr, s->imr);
......
255 258
    if (addr == E8390_CMD) {
256 259
        /* control register */
257 260
        s->cmd = val;
258
        if (val & E8390_START) {
261
        if (!(val & E8390_STOP)) { /* START bit makes no sense on RTL8029... */
259 262
            s->isr &= ~ENISR_RESET;
260 263
            /* test specific case: zero length transfert */
261 264
            if ((val & (E8390_RREAD | E8390_RWRITE)) &&
......
376 379
        case EN0_RSR:
377 380
            ret = s->rsr;
378 381
            break;
382
        case EN2_STARTPG:
383
            ret = s->start >> 8;
384
            break;
385
        case EN2_STOPPG:
386
            ret = s->stop >> 8;
387
            break;
379 388
        default:
380 389
            ret = 0x00;
381 390
            break;

Also available in: Unified diff