qemu/hw/arm_pic.c
<<
>>
Prefs
   1/*
   2 * Generic ARM Programmable Interrupt Controller support.
   3 *
   4 * Copyright (c) 2006 CodeSourcery.
   5 * Written by Paul Brook
   6 *
   7 * This code is licenced under the LGPL
   8 */
   9
  10#include "hw.h"
  11#include "pc.h"
  12#include "arm-misc.h"
  13
  14/* Stub functions for hardware that doesn't exist.  */
  15void pic_info(Monitor *mon)
  16{
  17}
  18
  19void irq_info(Monitor *mon)
  20{
  21}
  22
  23
  24/* Input 0 is IRQ and input 1 is FIQ.  */
  25static void arm_pic_cpu_handler(void *opaque, int irq, int level)
  26{
  27    CPUState *env = (CPUState *)opaque;
  28    switch (irq) {
  29    case ARM_PIC_CPU_IRQ:
  30        if (level)
  31            cpu_interrupt(env, CPU_INTERRUPT_HARD);
  32        else
  33            cpu_reset_interrupt(env, CPU_INTERRUPT_HARD);
  34        break;
  35    case ARM_PIC_CPU_FIQ:
  36        if (level)
  37            cpu_interrupt(env, CPU_INTERRUPT_FIQ);
  38        else
  39            cpu_reset_interrupt(env, CPU_INTERRUPT_FIQ);
  40        break;
  41    default:
  42        hw_error("arm_pic_cpu_handler: Bad interrput line %d\n", irq);
  43    }
  44}
  45
  46qemu_irq *arm_pic_init_cpu(CPUState *env)
  47{
  48    return qemu_allocate_irqs(arm_pic_cpu_handler, env, 2);
  49}
  50