diff options
| author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-01-09 14:18:33 -0500 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-09 14:18:33 -0500 |
| commit | 0a3a98f6dd4e8f4d928a09302c0d1c56f2192ac3 (patch) | |
| tree | 92f55e374a84d06ce8213a4540454760fdecf137 /arch/arm/kernel | |
| parent | 8ef12c9f01afba47c2d33bb939085111ca0d0f7d (diff) | |
| parent | 5367f2d67c7d0bf1faae90e6e7b4e2ac3c9b5e0f (diff) | |
Merge Linus' tree.
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/asm-offsets.c | 9 | ||||
| -rw-r--r-- | arch/arm/kernel/irq.c | 14 |
2 files changed, 14 insertions, 9 deletions
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 04d3082a7b94..0abbce8c70bc 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
| @@ -23,20 +23,15 @@ | |||
| 23 | #error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32 | 23 | #error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32 |
| 24 | #endif | 24 | #endif |
| 25 | /* | 25 | /* |
| 26 | * GCC 2.95.1, 2.95.2: ignores register clobber list in asm(). | ||
| 27 | * GCC 3.0, 3.1: general bad code generation. | 26 | * GCC 3.0, 3.1: general bad code generation. |
| 28 | * GCC 3.2.0: incorrect function argument offset calculation. | 27 | * GCC 3.2.0: incorrect function argument offset calculation. |
| 29 | * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c | 28 | * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c |
| 30 | * (http://gcc.gnu.org/PR8896) and incorrect structure | 29 | * (http://gcc.gnu.org/PR8896) and incorrect structure |
| 31 | * initialisation in fs/jffs2/erase.c | 30 | * initialisation in fs/jffs2/erase.c |
| 32 | */ | 31 | */ |
| 33 | #if __GNUC__ < 2 || \ | 32 | #if (__GNUC__ == 3 && __GNUC_MINOR__ < 3) |
| 34 | (__GNUC__ == 2 && __GNUC_MINOR__ < 95) || \ | ||
| 35 | (__GNUC__ == 2 && __GNUC_MINOR__ == 95 && __GNUC_PATCHLEVEL__ != 0 && \ | ||
| 36 | __GNUC_PATCHLEVEL__ < 3) || \ | ||
| 37 | (__GNUC__ == 3 && __GNUC_MINOR__ < 3) | ||
| 38 | #error Your compiler is too buggy; it is known to miscompile kernels. | 33 | #error Your compiler is too buggy; it is known to miscompile kernels. |
| 39 | #error Known good compilers: 2.95.3, 2.95.4, 2.96, 3.3 | 34 | #error Known good compilers: 3.3 |
| 40 | #endif | 35 | #endif |
| 41 | 36 | ||
| 42 | /* Use marker if you need to separate the values later */ | 37 | /* Use marker if you need to separate the values later */ |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 869c466e6258..b5645c4462cf 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
| @@ -684,8 +684,12 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
| 684 | spin_lock_irqsave(&irq_controller_lock, flags); | 684 | spin_lock_irqsave(&irq_controller_lock, flags); |
| 685 | p = &desc->action; | 685 | p = &desc->action; |
| 686 | if ((old = *p) != NULL) { | 686 | if ((old = *p) != NULL) { |
| 687 | /* Can't share interrupts unless both agree to */ | 687 | /* |
| 688 | if (!(old->flags & new->flags & SA_SHIRQ)) { | 688 | * Can't share interrupts unless both agree to and are |
| 689 | * the same type. | ||
| 690 | */ | ||
| 691 | if (!(old->flags & new->flags & SA_SHIRQ) || | ||
| 692 | (~old->flags & new->flags) & SA_TRIGGER_MASK) { | ||
| 689 | spin_unlock_irqrestore(&irq_controller_lock, flags); | 693 | spin_unlock_irqrestore(&irq_controller_lock, flags); |
| 690 | return -EBUSY; | 694 | return -EBUSY; |
| 691 | } | 695 | } |
| @@ -705,6 +709,12 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
| 705 | desc->running = 0; | 709 | desc->running = 0; |
| 706 | desc->pending = 0; | 710 | desc->pending = 0; |
| 707 | desc->disable_depth = 1; | 711 | desc->disable_depth = 1; |
| 712 | |||
| 713 | if (new->flags & SA_TRIGGER_MASK) { | ||
| 714 | unsigned int type = new->flags & SA_TRIGGER_MASK; | ||
| 715 | desc->chip->set_type(irq, type); | ||
| 716 | } | ||
| 717 | |||
| 708 | if (!desc->noautoenable) { | 718 | if (!desc->noautoenable) { |
| 709 | desc->disable_depth = 0; | 719 | desc->disable_depth = 0; |
| 710 | desc->chip->unmask(irq); | 720 | desc->chip->unmask(irq); |
