~jderose/ubuntu/raring/qemu/vde-again

« back to all changes in this revision

Viewing changes to hw/pl190.c

Tags: upstream-0.9.0+20070816
ImportĀ upstreamĀ versionĀ 0.9.0+20070816

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
#define PL190_NUM_PRIO 17
18
18
 
19
19
typedef struct {
20
 
    arm_pic_handler handler;
21
20
    uint32_t base;
22
21
    DisplayState *ds;
23
22
    uint32_t level;
33
32
    /* Current priority level.  */
34
33
    int priority;
35
34
    int prev_prio[PL190_NUM_PRIO];
36
 
    void *parent;
37
 
    int irq;
38
 
    int fiq;
 
35
    qemu_irq irq;
 
36
    qemu_irq fiq;
39
37
} pl190_state;
40
38
 
41
39
static const unsigned char pl190_id[] =
53
51
    int set;
54
52
 
55
53
    set = (level & s->prio_mask[s->priority]) != 0;
56
 
    pic_set_irq_new(s->parent, s->irq, set);
 
54
    qemu_set_irq(s->irq, set);
57
55
    set = ((s->level | s->soft_level) & s->fiq_select) != 0;
58
 
    pic_set_irq_new(s->parent, s->fiq, set);
 
56
    qemu_set_irq(s->fiq, set);
59
57
}
60
58
 
61
59
static void pl190_set_irq(void *opaque, int irq, int level)
232
230
  pl190_update_vectors(s);
233
231
}
234
232
 
235
 
void *pl190_init(uint32_t base, void *parent, int irq, int fiq)
 
233
qemu_irq *pl190_init(uint32_t base, qemu_irq irq, qemu_irq fiq)
236
234
{
237
235
    pl190_state *s;
 
236
    qemu_irq *qi;
238
237
    int iomemtype;
239
238
 
240
239
    s = (pl190_state *)qemu_mallocz(sizeof(pl190_state));
241
240
    iomemtype = cpu_register_io_memory(0, pl190_readfn,
242
241
                                       pl190_writefn, s);
243
 
    cpu_register_physical_memory(base, 0x00000fff, iomemtype);
244
 
    s->handler = pl190_set_irq;
 
242
    cpu_register_physical_memory(base, 0x00001000, iomemtype);
 
243
    qi = qemu_allocate_irqs(pl190_set_irq, s, 32);
245
244
    s->base = base;
246
 
    s->parent = parent;
247
245
    s->irq = irq;
248
246
    s->fiq = fiq;
249
247
    pl190_reset(s);
250
248
    /* ??? Save/restore.  */
251
 
    return s;
 
249
    return qi;
252
250
}