From 9a520fd8ca393ffff253fcaaa595a354ff111759 Mon Sep 17 00:00:00 2001 From: Suresh Siddha Date: Thu, 10 Jul 2008 11:16:46 -0700 Subject: [PATCH] --- yaml --- r: 112645 b: refs/heads/master c: d94d93ca5cc36cd78c532def62772c98fe8ba5d7 h: refs/heads/master i: 112643: 6dd137809e8ab33771a28fa129dbc061e7cf7ddc v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/i8259.c | 24 ++++++++++++++++++++++++ trunk/include/asm-x86/i8259.h | 3 +++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a23a4e083cc6..7535e3af8389 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 72b1e22dfcad1daca6906148fd956ffe404bb0bc +refs/heads/master: d94d93ca5cc36cd78c532def62772c98fe8ba5d7 diff --git a/trunk/arch/x86/kernel/i8259.c b/trunk/arch/x86/kernel/i8259.c index dc92b49d9204..4b8a53d841f7 100644 --- a/trunk/arch/x86/kernel/i8259.c +++ b/trunk/arch/x86/kernel/i8259.c @@ -282,6 +282,30 @@ static int __init i8259A_init_sysfs(void) device_initcall(i8259A_init_sysfs); +void mask_8259A(void) +{ + unsigned long flags; + + spin_lock_irqsave(&i8259A_lock, flags); + + outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ + outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ + + spin_unlock_irqrestore(&i8259A_lock, flags); +} + +void unmask_8259A(void) +{ + unsigned long flags; + + spin_lock_irqsave(&i8259A_lock, flags); + + outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */ + outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */ + + spin_unlock_irqrestore(&i8259A_lock, flags); +} + void init_8259A(int auto_eoi) { unsigned long flags; diff --git a/trunk/include/asm-x86/i8259.h b/trunk/include/asm-x86/i8259.h index 2f98df91f1f2..31112b6c595b 100644 --- a/trunk/include/asm-x86/i8259.h +++ b/trunk/include/asm-x86/i8259.h @@ -57,4 +57,7 @@ static inline void outb_pic(unsigned char value, unsigned int port) extern struct irq_chip i8259A_chip; +extern void mask_8259A(void); +extern void unmask_8259A(void); + #endif /* __ASM_I8259_H__ */