diff options
| author | John W. Linville <linville@tuxdriver.com> | 2006-03-15 17:02:08 -0500 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2006-03-15 17:02:08 -0500 |
| commit | dd288e7d75b9041f79fecae77d61cfa345da7266 (patch) | |
| tree | 85ff1d1ea0fe1d6eae0b6819422d5c6c05f862cd /arch | |
| parent | 30dcbf29cc6d92d70fa262e79e84011fe6913bed (diff) | |
| parent | 72df16f109b73be37977a26d342e9103e8851cb6 (diff) | |
Merge branch 'upstream-fixes'
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/Kconfig | 2 | ||||
| -rw-r--r-- | arch/arm/kernel/asm-offsets.c | 4 | ||||
| -rw-r--r-- | arch/arm/kernel/ptrace.c | 14 | ||||
| -rw-r--r-- | arch/arm/lib/muldi3.S | 4 | ||||
| -rw-r--r-- | arch/arm/mach-ixp4xx/Kconfig | 4 | ||||
| -rw-r--r-- | arch/arm/mach-ixp4xx/nas100d-setup.c | 3 | ||||
| -rw-r--r-- | arch/arm/mm/cache-v6.S | 7 | ||||
| -rw-r--r-- | arch/arm/mm/flush.c | 6 | ||||
| -rw-r--r-- | arch/i386/kernel/apic.c | 6 |
9 files changed, 27 insertions, 23 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 9f80fa502f8f..32ba00bd0a2f 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -799,6 +799,8 @@ source "drivers/i2c/Kconfig" | |||
| 799 | 799 | ||
| 800 | source "drivers/spi/Kconfig" | 800 | source "drivers/spi/Kconfig" |
| 801 | 801 | ||
| 802 | source "drivers/w1/Kconfig" | ||
| 803 | |||
| 802 | source "drivers/hwmon/Kconfig" | 804 | source "drivers/hwmon/Kconfig" |
| 803 | 805 | ||
| 804 | #source "drivers/l3/Kconfig" | 806 | #source "drivers/l3/Kconfig" |
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 0abbce8c70bc..b324dcac1c56 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
| @@ -57,7 +57,9 @@ int main(void) | |||
| 57 | DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value)); | 57 | DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value)); |
| 58 | DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate)); | 58 | DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate)); |
| 59 | DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); | 59 | DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); |
| 60 | DEFINE(TI_IWMMXT_STATE, (offsetof(struct thread_info, fpstate)+4)&~7); | 60 | #ifdef CONFIG_IWMMXT |
| 61 | DEFINE(TI_IWMMXT_STATE, offsetof(struct thread_info, fpstate.iwmmxt)); | ||
| 62 | #endif | ||
| 61 | BLANK(); | 63 | BLANK(); |
| 62 | DEFINE(S_R0, offsetof(struct pt_regs, ARM_r0)); | 64 | DEFINE(S_R0, offsetof(struct pt_regs, ARM_r0)); |
| 63 | DEFINE(S_R1, offsetof(struct pt_regs, ARM_r1)); | 65 | DEFINE(S_R1, offsetof(struct pt_regs, ARM_r1)); |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index 7b6256bb590e..bc9e2f8ae326 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
| @@ -610,15 +610,12 @@ static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) | |||
| 610 | static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) | 610 | static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) |
| 611 | { | 611 | { |
| 612 | struct thread_info *thread = task_thread_info(tsk); | 612 | struct thread_info *thread = task_thread_info(tsk); |
| 613 | void *ptr = &thread->fpstate; | ||
| 614 | 613 | ||
| 615 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) | 614 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) |
| 616 | return -ENODATA; | 615 | return -ENODATA; |
| 617 | iwmmxt_task_disable(thread); /* force it to ram */ | 616 | iwmmxt_task_disable(thread); /* force it to ram */ |
| 618 | /* The iWMMXt state is stored doubleword-aligned. */ | 617 | return copy_to_user(ufp, &thread->fpstate.iwmmxt, IWMMXT_SIZE) |
| 619 | if (((long) ptr) & 4) | 618 | ? -EFAULT : 0; |
| 620 | ptr += 4; | ||
| 621 | return copy_to_user(ufp, ptr, 0x98) ? -EFAULT : 0; | ||
| 622 | } | 619 | } |
| 623 | 620 | ||
| 624 | /* | 621 | /* |
| @@ -627,15 +624,12 @@ static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) | |||
| 627 | static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) | 624 | static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) |
| 628 | { | 625 | { |
| 629 | struct thread_info *thread = task_thread_info(tsk); | 626 | struct thread_info *thread = task_thread_info(tsk); |
| 630 | void *ptr = &thread->fpstate; | ||
| 631 | 627 | ||
| 632 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) | 628 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) |
| 633 | return -EACCES; | 629 | return -EACCES; |
| 634 | iwmmxt_task_release(thread); /* force a reload */ | 630 | iwmmxt_task_release(thread); /* force a reload */ |
| 635 | /* The iWMMXt state is stored doubleword-aligned. */ | 631 | return copy_from_user(&thead->fpstate.iwmmxt, ufp, IWMMXT_SIZE) |
| 636 | if (((long) ptr) & 4) | 632 | ? -EFAULT : 0; |
| 637 | ptr += 4; | ||
| 638 | return copy_from_user(ptr, ufp, 0x98) ? -EFAULT : 0; | ||
| 639 | } | 633 | } |
| 640 | 634 | ||
| 641 | #endif | 635 | #endif |
diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S index 72d594184b8a..d89c60615794 100644 --- a/arch/arm/lib/muldi3.S +++ b/arch/arm/lib/muldi3.S | |||
| @@ -29,8 +29,8 @@ ENTRY(__aeabi_lmul) | |||
| 29 | 29 | ||
| 30 | mul xh, yl, xh | 30 | mul xh, yl, xh |
| 31 | mla xh, xl, yh, xh | 31 | mla xh, xl, yh, xh |
| 32 | mov ip, xl, asr #16 | 32 | mov ip, xl, lsr #16 |
| 33 | mov yh, yl, asr #16 | 33 | mov yh, yl, lsr #16 |
| 34 | bic xl, xl, ip, lsl #16 | 34 | bic xl, xl, ip, lsl #16 |
| 35 | bic yl, yl, yh, lsl #16 | 35 | bic yl, yl, yh, lsl #16 |
| 36 | mla xh, yh, ip, xh | 36 | mla xh, yh, ip, xh |
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig index daadc78e271b..5bf50a2a737d 100644 --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig | |||
| @@ -8,11 +8,9 @@ menu "Intel IXP4xx Implementation Options" | |||
| 8 | 8 | ||
| 9 | comment "IXP4xx Platforms" | 9 | comment "IXP4xx Platforms" |
| 10 | 10 | ||
| 11 | # This entry is placed on top because otherwise it would have | ||
| 12 | # been shown as a submenu. | ||
| 13 | config MACH_NSLU2 | 11 | config MACH_NSLU2 |
| 14 | bool | 12 | bool |
| 15 | prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715) | 13 | prompt "Linksys NSLU2" |
| 16 | help | 14 | help |
| 17 | Say 'Y' here if you want your kernel to support Linksys's | 15 | Say 'Y' here if you want your kernel to support Linksys's |
| 18 | NSLU2 NAS device. For more information on this platform, | 16 | NSLU2 NAS device. For more information on this platform, |
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c index 856d56f3b2ae..a3b4c6ac5708 100644 --- a/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
| @@ -113,6 +113,9 @@ static void __init nas100d_init(void) | |||
| 113 | { | 113 | { |
| 114 | ixp4xx_sys_init(); | 114 | ixp4xx_sys_init(); |
| 115 | 115 | ||
| 116 | /* gpio 14 and 15 are _not_ clocks */ | ||
| 117 | *IXP4XX_GPIO_GPCLKR = 0; | ||
| 118 | |||
| 116 | nas100d_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | 119 | nas100d_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); |
| 117 | nas100d_flash_resource.end = | 120 | nas100d_flash_resource.end = |
| 118 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; | 121 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; |
diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S index d921c1024ae0..2c6c2a7c05a0 100644 --- a/arch/arm/mm/cache-v6.S +++ b/arch/arm/mm/cache-v6.S | |||
| @@ -96,15 +96,16 @@ ENTRY(v6_coherent_user_range) | |||
| 96 | #ifdef HARVARD_CACHE | 96 | #ifdef HARVARD_CACHE |
| 97 | bic r0, r0, #CACHE_LINE_SIZE - 1 | 97 | bic r0, r0, #CACHE_LINE_SIZE - 1 |
| 98 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D line | 98 | 1: mcr p15, 0, r0, c7, c10, 1 @ clean D line |
| 99 | mcr p15, 0, r0, c7, c5, 1 @ invalidate I line | ||
| 100 | add r0, r0, #CACHE_LINE_SIZE | 99 | add r0, r0, #CACHE_LINE_SIZE |
| 101 | cmp r0, r1 | 100 | cmp r0, r1 |
| 102 | blo 1b | 101 | blo 1b |
| 103 | #endif | 102 | #endif |
| 104 | mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB | ||
| 105 | #ifdef HARVARD_CACHE | ||
| 106 | mov r0, #0 | 103 | mov r0, #0 |
| 104 | #ifdef HARVARD_CACHE | ||
| 107 | mcr p15, 0, r0, c7, c10, 4 @ drain write buffer | 105 | mcr p15, 0, r0, c7, c10, 4 @ drain write buffer |
| 106 | mcr p15, 0, r0, c7, c5, 0 @ I+BTB cache invalidate | ||
| 107 | #else | ||
| 108 | mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB | ||
| 108 | #endif | 109 | #endif |
| 109 | mov pc, lr | 110 | mov pc, lr |
| 110 | 111 | ||
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 330695b6b19d..b103e56806bd 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
| @@ -24,14 +24,16 @@ | |||
| 24 | static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) | 24 | static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) |
| 25 | { | 25 | { |
| 26 | unsigned long to = ALIAS_FLUSH_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT); | 26 | unsigned long to = ALIAS_FLUSH_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT); |
| 27 | const int zero = 0; | ||
| 27 | 28 | ||
| 28 | set_pte(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL)); | 29 | set_pte(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL)); |
| 29 | flush_tlb_kernel_page(to); | 30 | flush_tlb_kernel_page(to); |
| 30 | 31 | ||
| 31 | asm( "mcrr p15, 0, %1, %0, c14\n" | 32 | asm( "mcrr p15, 0, %1, %0, c14\n" |
| 32 | " mcrr p15, 0, %1, %0, c5\n" | 33 | " mcr p15, 0, %2, c7, c10, 4\n" |
| 34 | " mcr p15, 0, %2, c7, c5, 0\n" | ||
| 33 | : | 35 | : |
| 34 | : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES) | 36 | : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) |
| 35 | : "cc"); | 37 | : "cc"); |
| 36 | } | 38 | } |
| 37 | 39 | ||
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index f39e09ef64ec..776c90989e06 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
| @@ -570,16 +570,18 @@ void __devinit setup_local_APIC(void) | |||
| 570 | */ | 570 | */ |
| 571 | void lapic_shutdown(void) | 571 | void lapic_shutdown(void) |
| 572 | { | 572 | { |
| 573 | unsigned long flags; | ||
| 574 | |||
| 573 | if (!cpu_has_apic) | 575 | if (!cpu_has_apic) |
| 574 | return; | 576 | return; |
| 575 | 577 | ||
| 576 | local_irq_disable(); | 578 | local_irq_save(flags); |
| 577 | clear_local_APIC(); | 579 | clear_local_APIC(); |
| 578 | 580 | ||
| 579 | if (enabled_via_apicbase) | 581 | if (enabled_via_apicbase) |
| 580 | disable_local_APIC(); | 582 | disable_local_APIC(); |
| 581 | 583 | ||
| 582 | local_irq_enable(); | 584 | local_irq_restore(flags); |
| 583 | } | 585 | } |
| 584 | 586 | ||
| 585 | #ifdef CONFIG_PM | 587 | #ifdef CONFIG_PM |
