On Fri, Mar 18, 2011 at 01:19:15PM +0100, Jan Kiszka wrote: > From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > > This allows to override the interrupt handling of QEMU in system mode. > KVM will make use of it to set a specialized handler. > > Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> > --- > cpu-all.h | 14 +++++++++++++- > exec.c | 4 +++- > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/cpu-all.h b/cpu-all.h > index 4f4631d..5835cfa 100644 > --- a/cpu-all.h > +++ b/cpu-all.h > @@ -790,7 +790,19 @@ extern CPUState *cpu_single_env; > #define CPU_INTERRUPT_SIPI 0x800 /* SIPI pending. */ > #define CPU_INTERRUPT_MCE 0x1000 /* (x86 only) MCE pending. */ > > -void cpu_interrupt(CPUState *s, int mask); > +#ifndef CONFIG_USER_ONLY > +typedef void (*CPUInterruptHandler)(CPUState *, int); > + > +extern CPUInterruptHandler cpu_interrupt_handler; > + > +static inline void cpu_interrupt(CPUState *s, int mask) > +{ > + cpu_interrupt_handler(s, mask); > +} > +#else /* USER_ONLY */ > +void cpu_interrupt(CPUState *env, int mask); > +#endif /* USER_ONLY */ > + > void cpu_reset_interrupt(CPUState *env, int mask); > > void cpu_exit(CPUState *s); > diff --git a/exec.c b/exec.c > index 4721f04..0c80f84 100644 > --- a/exec.c > +++ b/exec.c > @@ -1632,7 +1632,7 @@ static void cpu_unlink_tb(CPUState *env) > > #ifndef CONFIG_USER_ONLY > /* mask must never be zero, except for A20 change call */ > -void cpu_interrupt(CPUState *env, int mask) > +static void tcg_handle_interrupt(CPUState *env, int mask) > { > int old_mask; > > @@ -1659,6 +1659,8 @@ void cpu_interrupt(CPUState *env, int mask) > } > } > > +CPUInterruptHandler cpu_interrupt_handler = tcg_handle_interrupt; > + > #else /* CONFIG_USER_ONLY */ > > void cpu_interrupt(CPUState *env, int mask) > -- > 1.7.1 Perhaps a function would be a better interface, but can be changed later. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html