Revision b0a21b53 hw/i8259.c

b/hw/i8259.c
122 122

  
123 123
/* raise irq to CPU if necessary. must be called every time the active
124 124
   irq may change */
125
void pic_update_irq(void)
125
static void pic_update_irq(void)
126 126
{
127 127
    int irq2, irq;
128 128

  
......
160 160

  
161 161
#ifdef DEBUG_IRQ_LATENCY
162 162
int64_t irq_time[16];
163
int64_t cpu_get_ticks(void);
164 163
#endif
165 164
#if defined(DEBUG_PIC)
166 165
int irq_level[16];
......
376 375
    return ret;
377 376
}
378 377

  
378
static void pic_save(QEMUFile *f, void *opaque)
379
{
380
    PicState *s = opaque;
381
    
382
    qemu_put_8s(f, &s->last_irr);
383
    qemu_put_8s(f, &s->irr);
384
    qemu_put_8s(f, &s->imr);
385
    qemu_put_8s(f, &s->isr);
386
    qemu_put_8s(f, &s->priority_add);
387
    qemu_put_8s(f, &s->irq_base);
388
    qemu_put_8s(f, &s->read_reg_select);
389
    qemu_put_8s(f, &s->poll);
390
    qemu_put_8s(f, &s->special_mask);
391
    qemu_put_8s(f, &s->init_state);
392
    qemu_put_8s(f, &s->auto_eoi);
393
    qemu_put_8s(f, &s->rotate_on_auto_eoi);
394
    qemu_put_8s(f, &s->special_fully_nested_mode);
395
    qemu_put_8s(f, &s->init4);
396
}
397

  
398
static int pic_load(QEMUFile *f, void *opaque, int version_id)
399
{
400
    PicState *s = opaque;
401
    
402
    if (version_id != 1)
403
        return -EINVAL;
404

  
405
    qemu_get_8s(f, &s->last_irr);
406
    qemu_get_8s(f, &s->irr);
407
    qemu_get_8s(f, &s->imr);
408
    qemu_get_8s(f, &s->isr);
409
    qemu_get_8s(f, &s->priority_add);
410
    qemu_get_8s(f, &s->irq_base);
411
    qemu_get_8s(f, &s->read_reg_select);
412
    qemu_get_8s(f, &s->poll);
413
    qemu_get_8s(f, &s->special_mask);
414
    qemu_get_8s(f, &s->init_state);
415
    qemu_get_8s(f, &s->auto_eoi);
416
    qemu_get_8s(f, &s->rotate_on_auto_eoi);
417
    qemu_get_8s(f, &s->special_fully_nested_mode);
418
    qemu_get_8s(f, &s->init4);
419
    return 0;
420
}
421

  
422
/* XXX: add generic master/slave system */
423
static void pic_init1(int io_addr, PicState *s)
424
{
425
    register_ioport_write(io_addr, 2, 1, pic_ioport_write, s);
426
    register_ioport_read(io_addr, 2, 1, pic_ioport_read, s);
427

  
428
    register_savevm("i8259", io_addr, 1, pic_save, pic_load, s);
429
}
430

  
379 431
void pic_init(void)
380 432
{
381
    register_ioport_write(0x20, 2, 1, pic_ioport_write, &pics[0]);
382
    register_ioport_read(0x20, 2, 1, pic_ioport_read, &pics[0]);
383
    register_ioport_write(0xa0, 2, 1, pic_ioport_write, &pics[1]);
384
    register_ioport_read(0xa0, 2, 1, pic_ioport_read, &pics[1]);
433
    pic_init1(0x20, &pics[0]);
434
    pic_init1(0xa0, &pics[1]);
385 435
}
386 436

  

Also available in: Unified diff