ia64/xen-unstable

annotate xen/include/asm-x86/irq.h @ 15812:86a154e1ef5d

[HVM] Shadow: don't shadow the p2m table.
For HVM vcpus with paging disabled, we used to shadow the p2m table,
and skip the p2m lookup to go from gfn to mfn. Instead, we now
provide a simple pagetable that gives a one-to-one mapping of 4GB, and
shadow that, making the translations from gfn to mfn via the p2m.
This removes the paging-disabled special-case code from the shadow
fault handler, and allows us to expand the p2m interface, since all HVM
translations now go through the same p2m lookups.
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
author Tim Deegan <Tim.Deegan@xensource.com>
date Fri Aug 31 11:06:22 2007 +0100 (2007-08-31)
parents 35e38c9048c8
children 6ea3db7ae24d
rev   line source
kaf24@1452 1 #ifndef _ASM_HW_IRQ_H
kaf24@1452 2 #define _ASM_HW_IRQ_H
kaf24@1452 3
kaf24@1452 4 /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */
kaf24@1452 5
kaf24@1452 6 #include <xen/config.h>
kaf24@1452 7 #include <asm/atomic.h>
kaf24@4804 8 #include <irq_vectors.h>
kaf24@1452 9
kaf24@5374 10 #define IO_APIC_IRQ(irq) (((irq) >= 16) || ((1<<(irq)) & io_apic_irqs))
kaf24@5374 11 #define IO_APIC_VECTOR(irq) (irq_vector[irq])
kaf24@5380 12
kaf24@9734 13 #define LEGACY_VECTOR(irq) ((irq) + FIRST_LEGACY_VECTOR)
kaf24@9734 14 #define LEGACY_IRQ_FROM_VECTOR(vec) ((vec) - FIRST_LEGACY_VECTOR)
kaf24@5380 15
kaf24@5374 16 #define irq_to_vector(irq) \
kaf24@5374 17 (IO_APIC_IRQ(irq) ? IO_APIC_VECTOR(irq) : LEGACY_VECTOR(irq))
kaf24@5374 18 #define vector_to_irq(vec) (vector_irq[vec])
kaf24@5374 19
kaf24@5035 20 extern int vector_irq[NR_VECTORS];
kaf24@4804 21 extern u8 irq_vector[NR_IRQ_VECTORS];
kaf24@4804 22 #define AUTO_ASSIGN -1
kaf24@1452 23
kaf24@4804 24 #define platform_legacy_irq(irq) ((irq) < 16)
kaf24@1452 25
kaf24@8847 26 fastcall void event_check_interrupt(void);
kaf24@8847 27 fastcall void invalidate_interrupt(void);
kaf24@8847 28 fastcall void call_function_interrupt(void);
kaf24@8847 29 fastcall void apic_timer_interrupt(void);
kaf24@8847 30 fastcall void error_interrupt(void);
kaf24@8847 31 fastcall void spurious_interrupt(void);
kaf24@8847 32 fastcall void thermal_interrupt(void);
kaf24@8847 33
kaf24@5146 34 void disable_8259A_irq(unsigned int irq);
kaf24@5146 35 void enable_8259A_irq(unsigned int irq);
kaf24@5146 36 int i8259A_irq_pending(unsigned int irq);
kaf24@5146 37 void init_8259A(int aeoi);
kfraser@15314 38 int i8259A_suspend(void);
kfraser@15314 39 int i8259A_resume(void);
kaf24@5380 40
kaf24@5146 41 void setup_IO_APIC(void);
kaf24@5146 42 void disable_IO_APIC(void);
kaf24@5146 43 void print_IO_APIC(void);
kaf24@5146 44 void setup_ioapic_dest(void);
kaf24@1452 45
kaf24@1452 46 extern unsigned long io_apic_irqs;
kaf24@1452 47
kaf24@1452 48 extern atomic_t irq_err_count;
kaf24@1452 49 extern atomic_t irq_mis_count;
kaf24@1452 50
kaf24@10333 51 int pirq_acktype(int irq);
kaf24@10333 52 int pirq_shared(int irq);
kaf24@10333 53
kaf24@1452 54 #endif /* _ASM_HW_IRQ_H */