diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-29 19:34:07 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-08-29 19:34:07 -0400 |
| commit | 90e93648c41bd29a72f6ec55ce27a23c209eab8c (patch) | |
| tree | 705afc522c361f681567187018d80cf028fcb334 | |
| parent | 3ae627b5a6c8f6bf992eee6a3399a1854641a476 (diff) | |
| parent | 25904157168ddc8841748a729914f00e53d7e049 (diff) | |
Merge branch 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm:
ARM: pm: avoid writing the auxillary control register for ARMv7
ARM: pm: some ARMv7 requires a dsb in resume to ensure correctness
ARM: pm: arm920/926: fix number of registers saved
ARM: pm: CPU specific code should not overwrite r1 (v:p offset)
ARM: 7066/1: proc-v7: disable SCTLR.TE when disabling MMU
ARM: 7065/1: kexec: ensure new kernel is entered in ARM state
ARM: 7003/1: vexpress: Add clock definition for the SP805.
ARM: 7051/1: cpuimx* boards: fix mach-types errors
ARM: 7019/1: Footbridge: select CLKEVT_I8253 for ARCH_NETWINDER
ARM: 7015/1: ARM errata: Possible cache data corruption with hit-under-miss enabled
ARM: 7014/1: cache-l2x0: Fix L2 Cache size calculation.
ARM: 6967/1: ep93xx: ts72xx: fix board model detection
ARM: 6965/1: ep93xx: add model detection for ts-7300 and ts-7400 boards
ARM: cache: detect VIPT aliasing I-cache on ARMv6
ARM: twd: register clockevents device before enabling PPI
ARM: realview: ensure visibility of writes during reset
ARM: perf: make name of arm_pmu_type consistent
ARM: perf: fix prototype of release_pmu
ARM: fix perf build with uclibc toolchains
| -rw-r--r-- | arch/arm/Kconfig | 12 | ||||
| -rw-r--r-- | arch/arm/include/asm/hardware/cache-l2x0.h | 2 | ||||
| -rw-r--r-- | arch/arm/include/asm/pmu.h | 10 | ||||
| -rw-r--r-- | arch/arm/kernel/pmu.c | 26 | ||||
| -rw-r--r-- | arch/arm/kernel/relocate_kernel.S | 3 | ||||
| -rw-r--r-- | arch/arm/kernel/setup.c | 15 | ||||
| -rw-r--r-- | arch/arm/kernel/smp_twd.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-ep93xx/include/mach/ts72xx.h | 26 | ||||
| -rw-r--r-- | arch/arm/mach-footbridge/Kconfig | 1 | ||||
| -rw-r--r-- | arch/arm/mach-imx/mach-cpuimx27.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-imx/mach-cpuimx35.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-imx/mach-eukrea_cpuimx25.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-realview/include/mach/system.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-vexpress/v2m.c | 7 | ||||
| -rw-r--r-- | arch/arm/mm/proc-arm920.S | 2 | ||||
| -rw-r--r-- | arch/arm/mm/proc-arm926.S | 2 | ||||
| -rw-r--r-- | arch/arm/mm/proc-sa1100.S | 10 | ||||
| -rw-r--r-- | arch/arm/mm/proc-v6.S | 16 | ||||
| -rw-r--r-- | arch/arm/mm/proc-v7.S | 6 | ||||
| -rw-r--r-- | arch/arm/mm/proc-xsc3.S | 6 | ||||
| -rw-r--r-- | arch/arm/tools/mach-types | 6 | ||||
| -rw-r--r-- | tools/perf/arch/arm/util/dwarf-regs.c | 3 |
22 files changed, 114 insertions, 50 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 5ebc5d922ea1..3269576dbfa8 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -1271,6 +1271,18 @@ config ARM_ERRATA_754327 | |||
| 1271 | This workaround defines cpu_relax() as smp_mb(), preventing correctly | 1271 | This workaround defines cpu_relax() as smp_mb(), preventing correctly |
| 1272 | written polling loops from denying visibility of updates to memory. | 1272 | written polling loops from denying visibility of updates to memory. |
| 1273 | 1273 | ||
| 1274 | config ARM_ERRATA_364296 | ||
| 1275 | bool "ARM errata: Possible cache data corruption with hit-under-miss enabled" | ||
| 1276 | depends on CPU_V6 && !SMP | ||
| 1277 | help | ||
| 1278 | This options enables the workaround for the 364296 ARM1136 | ||
| 1279 | r0p2 erratum (possible cache data corruption with | ||
| 1280 | hit-under-miss enabled). It sets the undocumented bit 31 in | ||
| 1281 | the auxiliary control register and the FI bit in the control | ||
| 1282 | register, thus disabling hit-under-miss without putting the | ||
| 1283 | processor into full low interrupt latency mode. ARM11MPCore | ||
| 1284 | is not affected. | ||
| 1285 | |||
| 1274 | endmenu | 1286 | endmenu |
| 1275 | 1287 | ||
| 1276 | source "arch/arm/common/Kconfig" | 1288 | source "arch/arm/common/Kconfig" |
diff --git a/arch/arm/include/asm/hardware/cache-l2x0.h b/arch/arm/include/asm/hardware/cache-l2x0.h index 16bd48031583..bfa706ffd968 100644 --- a/arch/arm/include/asm/hardware/cache-l2x0.h +++ b/arch/arm/include/asm/hardware/cache-l2x0.h | |||
| @@ -64,7 +64,7 @@ | |||
| 64 | #define L2X0_AUX_CTRL_MASK 0xc0000fff | 64 | #define L2X0_AUX_CTRL_MASK 0xc0000fff |
| 65 | #define L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT 16 | 65 | #define L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT 16 |
| 66 | #define L2X0_AUX_CTRL_WAY_SIZE_SHIFT 17 | 66 | #define L2X0_AUX_CTRL_WAY_SIZE_SHIFT 17 |
| 67 | #define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x3 << 17) | 67 | #define L2X0_AUX_CTRL_WAY_SIZE_MASK (0x7 << 17) |
| 68 | #define L2X0_AUX_CTRL_SHARE_OVERRIDE_SHIFT 22 | 68 | #define L2X0_AUX_CTRL_SHARE_OVERRIDE_SHIFT 22 |
| 69 | #define L2X0_AUX_CTRL_NS_LOCKDOWN_SHIFT 26 | 69 | #define L2X0_AUX_CTRL_NS_LOCKDOWN_SHIFT 26 |
| 70 | #define L2X0_AUX_CTRL_NS_INT_CTRL_SHIFT 27 | 70 | #define L2X0_AUX_CTRL_NS_INT_CTRL_SHIFT 27 |
diff --git a/arch/arm/include/asm/pmu.h b/arch/arm/include/asm/pmu.h index 67c70a31a1be..b7e82c4aced6 100644 --- a/arch/arm/include/asm/pmu.h +++ b/arch/arm/include/asm/pmu.h | |||
| @@ -41,7 +41,7 @@ struct arm_pmu_platdata { | |||
| 41 | * encoded error on failure. | 41 | * encoded error on failure. |
| 42 | */ | 42 | */ |
| 43 | extern struct platform_device * | 43 | extern struct platform_device * |
| 44 | reserve_pmu(enum arm_pmu_type device); | 44 | reserve_pmu(enum arm_pmu_type type); |
| 45 | 45 | ||
| 46 | /** | 46 | /** |
| 47 | * release_pmu() - Relinquish control of the performance counters | 47 | * release_pmu() - Relinquish control of the performance counters |
| @@ -62,26 +62,26 @@ release_pmu(enum arm_pmu_type type); | |||
| 62 | * the actual hardware initialisation. | 62 | * the actual hardware initialisation. |
| 63 | */ | 63 | */ |
| 64 | extern int | 64 | extern int |
| 65 | init_pmu(enum arm_pmu_type device); | 65 | init_pmu(enum arm_pmu_type type); |
| 66 | 66 | ||
| 67 | #else /* CONFIG_CPU_HAS_PMU */ | 67 | #else /* CONFIG_CPU_HAS_PMU */ |
| 68 | 68 | ||
| 69 | #include <linux/err.h> | 69 | #include <linux/err.h> |
| 70 | 70 | ||
| 71 | static inline struct platform_device * | 71 | static inline struct platform_device * |
| 72 | reserve_pmu(enum arm_pmu_type device) | 72 | reserve_pmu(enum arm_pmu_type type) |
| 73 | { | 73 | { |
| 74 | return ERR_PTR(-ENODEV); | 74 | return ERR_PTR(-ENODEV); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | static inline int | 77 | static inline int |
| 78 | release_pmu(struct platform_device *pdev) | 78 | release_pmu(enum arm_pmu_type type) |
| 79 | { | 79 | { |
| 80 | return -ENODEV; | 80 | return -ENODEV; |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | static inline int | 83 | static inline int |
| 84 | init_pmu(enum arm_pmu_type device) | 84 | init_pmu(enum arm_pmu_type type) |
| 85 | { | 85 | { |
| 86 | return -ENODEV; | 86 | return -ENODEV; |
| 87 | } | 87 | } |
diff --git a/arch/arm/kernel/pmu.c b/arch/arm/kernel/pmu.c index 2b70709376c3..c53474fe84df 100644 --- a/arch/arm/kernel/pmu.c +++ b/arch/arm/kernel/pmu.c | |||
| @@ -31,7 +31,7 @@ static int __devinit pmu_register(struct platform_device *pdev, | |||
| 31 | { | 31 | { |
| 32 | if (type < 0 || type >= ARM_NUM_PMU_DEVICES) { | 32 | if (type < 0 || type >= ARM_NUM_PMU_DEVICES) { |
| 33 | pr_warning("received registration request for unknown " | 33 | pr_warning("received registration request for unknown " |
| 34 | "device %d\n", type); | 34 | "PMU device type %d\n", type); |
| 35 | return -EINVAL; | 35 | return -EINVAL; |
| 36 | } | 36 | } |
| 37 | 37 | ||
| @@ -112,17 +112,17 @@ static int __init register_pmu_driver(void) | |||
| 112 | device_initcall(register_pmu_driver); | 112 | device_initcall(register_pmu_driver); |
| 113 | 113 | ||
| 114 | struct platform_device * | 114 | struct platform_device * |
| 115 | reserve_pmu(enum arm_pmu_type device) | 115 | reserve_pmu(enum arm_pmu_type type) |
| 116 | { | 116 | { |
| 117 | struct platform_device *pdev; | 117 | struct platform_device *pdev; |
| 118 | 118 | ||
| 119 | if (test_and_set_bit_lock(device, &pmu_lock)) { | 119 | if (test_and_set_bit_lock(type, &pmu_lock)) { |
| 120 | pdev = ERR_PTR(-EBUSY); | 120 | pdev = ERR_PTR(-EBUSY); |
| 121 | } else if (pmu_devices[device] == NULL) { | 121 | } else if (pmu_devices[type] == NULL) { |
| 122 | clear_bit_unlock(device, &pmu_lock); | 122 | clear_bit_unlock(type, &pmu_lock); |
| 123 | pdev = ERR_PTR(-ENODEV); | 123 | pdev = ERR_PTR(-ENODEV); |
| 124 | } else { | 124 | } else { |
| 125 | pdev = pmu_devices[device]; | 125 | pdev = pmu_devices[type]; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | return pdev; | 128 | return pdev; |
| @@ -130,11 +130,11 @@ reserve_pmu(enum arm_pmu_type device) | |||
| 130 | EXPORT_SYMBOL_GPL(reserve_pmu); | 130 | EXPORT_SYMBOL_GPL(reserve_pmu); |
| 131 | 131 | ||
| 132 | int | 132 | int |
| 133 | release_pmu(enum arm_pmu_type device) | 133 | release_pmu(enum arm_pmu_type type) |
| 134 | { | 134 | { |
| 135 | if (WARN_ON(!pmu_devices[device])) | 135 | if (WARN_ON(!pmu_devices[type])) |
| 136 | return -EINVAL; | 136 | return -EINVAL; |
| 137 | clear_bit_unlock(device, &pmu_lock); | 137 | clear_bit_unlock(type, &pmu_lock); |
| 138 | return 0; | 138 | return 0; |
| 139 | } | 139 | } |
| 140 | EXPORT_SYMBOL_GPL(release_pmu); | 140 | EXPORT_SYMBOL_GPL(release_pmu); |
| @@ -182,17 +182,17 @@ init_cpu_pmu(void) | |||
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | int | 184 | int |
| 185 | init_pmu(enum arm_pmu_type device) | 185 | init_pmu(enum arm_pmu_type type) |
| 186 | { | 186 | { |
| 187 | int err = 0; | 187 | int err = 0; |
| 188 | 188 | ||
| 189 | switch (device) { | 189 | switch (type) { |
| 190 | case ARM_PMU_DEVICE_CPU: | 190 | case ARM_PMU_DEVICE_CPU: |
| 191 | err = init_cpu_pmu(); | 191 | err = init_cpu_pmu(); |
| 192 | break; | 192 | break; |
| 193 | default: | 193 | default: |
| 194 | pr_warning("attempt to initialise unknown device %d\n", | 194 | pr_warning("attempt to initialise PMU of unknown " |
| 195 | device); | 195 | "type %d\n", type); |
| 196 | err = -EINVAL; | 196 | err = -EINVAL; |
| 197 | } | 197 | } |
| 198 | 198 | ||
diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S index 9cf4cbf8f95b..d0cdedf4864d 100644 --- a/arch/arm/kernel/relocate_kernel.S +++ b/arch/arm/kernel/relocate_kernel.S | |||
| @@ -57,7 +57,8 @@ relocate_new_kernel: | |||
| 57 | mov r0,#0 | 57 | mov r0,#0 |
| 58 | ldr r1,kexec_mach_type | 58 | ldr r1,kexec_mach_type |
| 59 | ldr r2,kexec_boot_atags | 59 | ldr r2,kexec_boot_atags |
| 60 | mov pc,lr | 60 | ARM( mov pc, lr ) |
| 61 | THUMB( bx lr ) | ||
| 61 | 62 | ||
| 62 | .align | 63 | .align |
| 63 | 64 | ||
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 70bca649e925..e514c76043b4 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -280,18 +280,19 @@ static void __init cacheid_init(void) | |||
| 280 | if (arch >= CPU_ARCH_ARMv6) { | 280 | if (arch >= CPU_ARCH_ARMv6) { |
| 281 | if ((cachetype & (7 << 29)) == 4 << 29) { | 281 | if ((cachetype & (7 << 29)) == 4 << 29) { |
| 282 | /* ARMv7 register format */ | 282 | /* ARMv7 register format */ |
| 283 | arch = CPU_ARCH_ARMv7; | ||
| 283 | cacheid = CACHEID_VIPT_NONALIASING; | 284 | cacheid = CACHEID_VIPT_NONALIASING; |
| 284 | if ((cachetype & (3 << 14)) == 1 << 14) | 285 | if ((cachetype & (3 << 14)) == 1 << 14) |
| 285 | cacheid |= CACHEID_ASID_TAGGED; | 286 | cacheid |= CACHEID_ASID_TAGGED; |
| 286 | else if (cpu_has_aliasing_icache(CPU_ARCH_ARMv7)) | ||
| 287 | cacheid |= CACHEID_VIPT_I_ALIASING; | ||
| 288 | } else if (cachetype & (1 << 23)) { | ||
| 289 | cacheid = CACHEID_VIPT_ALIASING; | ||
| 290 | } else { | 287 | } else { |
| 291 | cacheid = CACHEID_VIPT_NONALIASING; | 288 | arch = CPU_ARCH_ARMv6; |
| 292 | if (cpu_has_aliasing_icache(CPU_ARCH_ARMv6)) | 289 | if (cachetype & (1 << 23)) |
| 293 | cacheid |= CACHEID_VIPT_I_ALIASING; | 290 | cacheid = CACHEID_VIPT_ALIASING; |
| 291 | else | ||
| 292 | cacheid = CACHEID_VIPT_NONALIASING; | ||
| 294 | } | 293 | } |
| 294 | if (cpu_has_aliasing_icache(arch)) | ||
| 295 | cacheid |= CACHEID_VIPT_I_ALIASING; | ||
| 295 | } else { | 296 | } else { |
| 296 | cacheid = CACHEID_VIVT; | 297 | cacheid = CACHEID_VIVT; |
| 297 | } | 298 | } |
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c index 2c277d40cee6..01c186222f3b 100644 --- a/arch/arm/kernel/smp_twd.c +++ b/arch/arm/kernel/smp_twd.c | |||
| @@ -137,8 +137,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) | |||
| 137 | clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk); | 137 | clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk); |
| 138 | clk->min_delta_ns = clockevent_delta2ns(0xf, clk); | 138 | clk->min_delta_ns = clockevent_delta2ns(0xf, clk); |
| 139 | 139 | ||
| 140 | clockevents_register_device(clk); | ||
| 141 | |||
| 140 | /* Make sure our local interrupt controller has this enabled */ | 142 | /* Make sure our local interrupt controller has this enabled */ |
| 141 | gic_enable_ppi(clk->irq); | 143 | gic_enable_ppi(clk->irq); |
| 142 | |||
| 143 | clockevents_register_device(clk); | ||
| 144 | } | 144 | } |
diff --git a/arch/arm/mach-ep93xx/include/mach/ts72xx.h b/arch/arm/mach-ep93xx/include/mach/ts72xx.h index 0eabec62cd9d..f1397a13e76b 100644 --- a/arch/arm/mach-ep93xx/include/mach/ts72xx.h +++ b/arch/arm/mach-ep93xx/include/mach/ts72xx.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | * TS72xx memory map: | 6 | * TS72xx memory map: |
| 7 | * | 7 | * |
| 8 | * virt phys size | 8 | * virt phys size |
| 9 | * febff000 22000000 4K model number register | 9 | * febff000 22000000 4K model number register (bits 0-2) |
| 10 | * febfe000 22400000 4K options register | 10 | * febfe000 22400000 4K options register |
| 11 | * febfd000 22800000 4K options register #2 | 11 | * febfd000 22800000 4K options register #2 |
| 12 | * febf9000 10800000 4K TS-5620 RTC index register | 12 | * febf9000 10800000 4K TS-5620 RTC index register |
| @@ -20,6 +20,9 @@ | |||
| 20 | #define TS72XX_MODEL_TS7200 0x00 | 20 | #define TS72XX_MODEL_TS7200 0x00 |
| 21 | #define TS72XX_MODEL_TS7250 0x01 | 21 | #define TS72XX_MODEL_TS7250 0x01 |
| 22 | #define TS72XX_MODEL_TS7260 0x02 | 22 | #define TS72XX_MODEL_TS7260 0x02 |
| 23 | #define TS72XX_MODEL_TS7300 0x03 | ||
| 24 | #define TS72XX_MODEL_TS7400 0x04 | ||
| 25 | #define TS72XX_MODEL_MASK 0x07 | ||
| 23 | 26 | ||
| 24 | 27 | ||
| 25 | #define TS72XX_OPTIONS_PHYS_BASE 0x22400000 | 28 | #define TS72XX_OPTIONS_PHYS_BASE 0x22400000 |
| @@ -51,19 +54,34 @@ | |||
| 51 | 54 | ||
| 52 | #ifndef __ASSEMBLY__ | 55 | #ifndef __ASSEMBLY__ |
| 53 | 56 | ||
| 57 | static inline int ts72xx_model(void) | ||
| 58 | { | ||
| 59 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) & TS72XX_MODEL_MASK; | ||
| 60 | } | ||
| 61 | |||
| 54 | static inline int board_is_ts7200(void) | 62 | static inline int board_is_ts7200(void) |
| 55 | { | 63 | { |
| 56 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7200; | 64 | return ts72xx_model() == TS72XX_MODEL_TS7200; |
| 57 | } | 65 | } |
| 58 | 66 | ||
| 59 | static inline int board_is_ts7250(void) | 67 | static inline int board_is_ts7250(void) |
| 60 | { | 68 | { |
| 61 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7250; | 69 | return ts72xx_model() == TS72XX_MODEL_TS7250; |
| 62 | } | 70 | } |
| 63 | 71 | ||
| 64 | static inline int board_is_ts7260(void) | 72 | static inline int board_is_ts7260(void) |
| 65 | { | 73 | { |
| 66 | return __raw_readb(TS72XX_MODEL_VIRT_BASE) == TS72XX_MODEL_TS7260; | 74 | return ts72xx_model() == TS72XX_MODEL_TS7260; |
| 75 | } | ||
| 76 | |||
| 77 | static inline int board_is_ts7300(void) | ||
| 78 | { | ||
| 79 | return ts72xx_model() == TS72XX_MODEL_TS7300; | ||
| 80 | } | ||
| 81 | |||
| 82 | static inline int board_is_ts7400(void) | ||
| 83 | { | ||
| 84 | return ts72xx_model() == TS72XX_MODEL_TS7400; | ||
| 67 | } | 85 | } |
| 68 | 86 | ||
| 69 | static inline int is_max197_installed(void) | 87 | static inline int is_max197_installed(void) |
diff --git a/arch/arm/mach-footbridge/Kconfig b/arch/arm/mach-footbridge/Kconfig index dc26fff22cf0..c8e7afcf14ec 100644 --- a/arch/arm/mach-footbridge/Kconfig +++ b/arch/arm/mach-footbridge/Kconfig | |||
| @@ -62,6 +62,7 @@ config ARCH_EBSA285_HOST | |||
| 62 | config ARCH_NETWINDER | 62 | config ARCH_NETWINDER |
| 63 | bool "NetWinder" | 63 | bool "NetWinder" |
| 64 | select CLKSRC_I8253 | 64 | select CLKSRC_I8253 |
| 65 | select CLKEVT_I8253 | ||
| 65 | select FOOTBRIDGE_HOST | 66 | select FOOTBRIDGE_HOST |
| 66 | select ISA | 67 | select ISA |
| 67 | select ISA_DMA | 68 | select ISA_DMA |
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c index 87887ac5806b..f851fe903687 100644 --- a/arch/arm/mach-imx/mach-cpuimx27.c +++ b/arch/arm/mach-imx/mach-cpuimx27.c | |||
| @@ -310,7 +310,7 @@ static struct sys_timer eukrea_cpuimx27_timer = { | |||
| 310 | .init = eukrea_cpuimx27_timer_init, | 310 | .init = eukrea_cpuimx27_timer_init, |
| 311 | }; | 311 | }; |
| 312 | 312 | ||
| 313 | MACHINE_START(CPUIMX27, "EUKREA CPUIMX27") | 313 | MACHINE_START(EUKREA_CPUIMX27, "EUKREA CPUIMX27") |
| 314 | .boot_params = MX27_PHYS_OFFSET + 0x100, | 314 | .boot_params = MX27_PHYS_OFFSET + 0x100, |
| 315 | .map_io = mx27_map_io, | 315 | .map_io = mx27_map_io, |
| 316 | .init_early = imx27_init_early, | 316 | .init_early = imx27_init_early, |
diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c index f39a478ba1a6..4bd083ba9af2 100644 --- a/arch/arm/mach-imx/mach-cpuimx35.c +++ b/arch/arm/mach-imx/mach-cpuimx35.c | |||
| @@ -192,7 +192,7 @@ struct sys_timer eukrea_cpuimx35_timer = { | |||
| 192 | .init = eukrea_cpuimx35_timer_init, | 192 | .init = eukrea_cpuimx35_timer_init, |
| 193 | }; | 193 | }; |
| 194 | 194 | ||
| 195 | MACHINE_START(EUKREA_CPUIMX35, "Eukrea CPUIMX35") | 195 | MACHINE_START(EUKREA_CPUIMX35SD, "Eukrea CPUIMX35") |
| 196 | /* Maintainer: Eukrea Electromatique */ | 196 | /* Maintainer: Eukrea Electromatique */ |
| 197 | .boot_params = MX3x_PHYS_OFFSET + 0x100, | 197 | .boot_params = MX3x_PHYS_OFFSET + 0x100, |
| 198 | .map_io = mx35_map_io, | 198 | .map_io = mx35_map_io, |
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c index da36da52969d..2442d5da883d 100644 --- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c +++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c | |||
| @@ -161,7 +161,7 @@ static struct sys_timer eukrea_cpuimx25_timer = { | |||
| 161 | .init = eukrea_cpuimx25_timer_init, | 161 | .init = eukrea_cpuimx25_timer_init, |
| 162 | }; | 162 | }; |
| 163 | 163 | ||
| 164 | MACHINE_START(EUKREA_CPUIMX25, "Eukrea CPUIMX25") | 164 | MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25") |
| 165 | /* Maintainer: Eukrea Electromatique */ | 165 | /* Maintainer: Eukrea Electromatique */ |
| 166 | .boot_params = MX25_PHYS_OFFSET + 0x100, | 166 | .boot_params = MX25_PHYS_OFFSET + 0x100, |
| 167 | .map_io = mx25_map_io, | 167 | .map_io = mx25_map_io, |
diff --git a/arch/arm/mach-realview/include/mach/system.h b/arch/arm/mach-realview/include/mach/system.h index a30f2e3ec178..6657ff231161 100644 --- a/arch/arm/mach-realview/include/mach/system.h +++ b/arch/arm/mach-realview/include/mach/system.h | |||
| @@ -44,6 +44,7 @@ static inline void arch_reset(char mode, const char *cmd) | |||
| 44 | */ | 44 | */ |
| 45 | if (realview_reset) | 45 | if (realview_reset) |
| 46 | realview_reset(mode); | 46 | realview_reset(mode); |
| 47 | dsb(); | ||
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | #endif | 50 | #endif |
diff --git a/arch/arm/mach-vexpress/v2m.c b/arch/arm/mach-vexpress/v2m.c index 9e6b93b1a043..d0d267a8d3f9 100644 --- a/arch/arm/mach-vexpress/v2m.c +++ b/arch/arm/mach-vexpress/v2m.c | |||
| @@ -318,6 +318,10 @@ static struct clk v2m_sp804_clk = { | |||
| 318 | .rate = 1000000, | 318 | .rate = 1000000, |
| 319 | }; | 319 | }; |
| 320 | 320 | ||
| 321 | static struct clk v2m_ref_clk = { | ||
| 322 | .rate = 32768, | ||
| 323 | }; | ||
| 324 | |||
| 321 | static struct clk dummy_apb_pclk; | 325 | static struct clk dummy_apb_pclk; |
| 322 | 326 | ||
| 323 | static struct clk_lookup v2m_lookups[] = { | 327 | static struct clk_lookup v2m_lookups[] = { |
| @@ -348,6 +352,9 @@ static struct clk_lookup v2m_lookups[] = { | |||
| 348 | }, { /* CLCD */ | 352 | }, { /* CLCD */ |
| 349 | .dev_id = "mb:clcd", | 353 | .dev_id = "mb:clcd", |
| 350 | .clk = &osc1_clk, | 354 | .clk = &osc1_clk, |
| 355 | }, { /* SP805 WDT */ | ||
| 356 | .dev_id = "mb:wdt", | ||
| 357 | .clk = &v2m_ref_clk, | ||
| 351 | }, { /* SP804 timers */ | 358 | }, { /* SP804 timers */ |
| 352 | .dev_id = "sp804", | 359 | .dev_id = "sp804", |
| 353 | .con_id = "v2m-timer0", | 360 | .con_id = "v2m-timer0", |
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 92bd102e3982..2e6849b41f66 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
| @@ -379,7 +379,7 @@ ENTRY(cpu_arm920_set_pte_ext) | |||
| 379 | 379 | ||
| 380 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ | 380 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
| 381 | .globl cpu_arm920_suspend_size | 381 | .globl cpu_arm920_suspend_size |
| 382 | .equ cpu_arm920_suspend_size, 4 * 3 | 382 | .equ cpu_arm920_suspend_size, 4 * 4 |
| 383 | #ifdef CONFIG_PM_SLEEP | 383 | #ifdef CONFIG_PM_SLEEP |
| 384 | ENTRY(cpu_arm920_do_suspend) | 384 | ENTRY(cpu_arm920_do_suspend) |
| 385 | stmfd sp!, {r4 - r7, lr} | 385 | stmfd sp!, {r4 - r7, lr} |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 2bbcf053dffd..cd8f79c3a282 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
| @@ -394,7 +394,7 @@ ENTRY(cpu_arm926_set_pte_ext) | |||
| 394 | 394 | ||
| 395 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ | 395 | /* Suspend/resume support: taken from arch/arm/plat-s3c24xx/sleep.S */ |
| 396 | .globl cpu_arm926_suspend_size | 396 | .globl cpu_arm926_suspend_size |
| 397 | .equ cpu_arm926_suspend_size, 4 * 3 | 397 | .equ cpu_arm926_suspend_size, 4 * 4 |
| 398 | #ifdef CONFIG_PM_SLEEP | 398 | #ifdef CONFIG_PM_SLEEP |
| 399 | ENTRY(cpu_arm926_do_suspend) | 399 | ENTRY(cpu_arm926_do_suspend) |
| 400 | stmfd sp!, {r4 - r7, lr} | 400 | stmfd sp!, {r4 - r7, lr} |
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 07219c2ae114..69e7f2ef7384 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
| @@ -182,11 +182,11 @@ ENDPROC(cpu_sa1100_do_suspend) | |||
| 182 | 182 | ||
| 183 | ENTRY(cpu_sa1100_do_resume) | 183 | ENTRY(cpu_sa1100_do_resume) |
| 184 | ldmia r0, {r4 - r7} @ load cp regs | 184 | ldmia r0, {r4 - r7} @ load cp regs |
| 185 | mov r1, #0 | 185 | mov ip, #0 |
| 186 | mcr p15, 0, r1, c8, c7, 0 @ flush I+D TLBs | 186 | mcr p15, 0, ip, c8, c7, 0 @ flush I+D TLBs |
| 187 | mcr p15, 0, r1, c7, c7, 0 @ flush I&D cache | 187 | mcr p15, 0, ip, c7, c7, 0 @ flush I&D cache |
| 188 | mcr p15, 0, r1, c9, c0, 0 @ invalidate RB | 188 | mcr p15, 0, ip, c9, c0, 0 @ invalidate RB |
| 189 | mcr p15, 0, r1, c9, c0, 5 @ allow user space to use RB | 189 | mcr p15, 0, ip, c9, c0, 5 @ allow user space to use RB |
| 190 | 190 | ||
| 191 | mcr p15, 0, r4, c3, c0, 0 @ domain ID | 191 | mcr p15, 0, r4, c3, c0, 0 @ domain ID |
| 192 | mcr p15, 0, r5, c2, c0, 0 @ translation table base addr | 192 | mcr p15, 0, r5, c2, c0, 0 @ translation table base addr |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 219138d2f158..a923aa0fd00d 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
| @@ -223,6 +223,22 @@ __v6_setup: | |||
| 223 | mrc p15, 0, r0, c1, c0, 0 @ read control register | 223 | mrc p15, 0, r0, c1, c0, 0 @ read control register |
| 224 | bic r0, r0, r5 @ clear bits them | 224 | bic r0, r0, r5 @ clear bits them |
| 225 | orr r0, r0, r6 @ set them | 225 | orr r0, r0, r6 @ set them |
| 226 | #ifdef CONFIG_ARM_ERRATA_364296 | ||
| 227 | /* | ||
| 228 | * Workaround for the 364296 ARM1136 r0p2 erratum (possible cache data | ||
| 229 | * corruption with hit-under-miss enabled). The conditional code below | ||
| 230 | * (setting the undocumented bit 31 in the auxiliary control register | ||
| 231 | * and the FI bit in the control register) disables hit-under-miss | ||
| 232 | * without putting the processor into full low interrupt latency mode. | ||
| 233 | */ | ||
| 234 | ldr r6, =0x4107b362 @ id for ARM1136 r0p2 | ||
| 235 | mrc p15, 0, r5, c0, c0, 0 @ get processor id | ||
| 236 | teq r5, r6 @ check for the faulty core | ||
| 237 | mrceq p15, 0, r5, c1, c0, 1 @ load aux control reg | ||
| 238 | orreq r5, r5, #(1 << 31) @ set the undocumented bit 31 | ||
| 239 | mcreq p15, 0, r5, c1, c0, 1 @ write aux control reg | ||
| 240 | orreq r0, r0, #(1 << 21) @ low interrupt latency configuration | ||
| 241 | #endif | ||
| 226 | mov pc, lr @ return to head.S:__ret | 242 | mov pc, lr @ return to head.S:__ret |
| 227 | 243 | ||
| 228 | /* | 244 | /* |
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S index a30e78542ccf..9049c0764db2 100644 --- a/arch/arm/mm/proc-v7.S +++ b/arch/arm/mm/proc-v7.S | |||
| @@ -66,6 +66,7 @@ ENDPROC(cpu_v7_proc_fin) | |||
| 66 | ENTRY(cpu_v7_reset) | 66 | ENTRY(cpu_v7_reset) |
| 67 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register | 67 | mrc p15, 0, r1, c1, c0, 0 @ ctrl register |
| 68 | bic r1, r1, #0x1 @ ...............m | 68 | bic r1, r1, #0x1 @ ...............m |
| 69 | THUMB( bic r1, r1, #1 << 30 ) @ SCTLR.TE (Thumb exceptions) | ||
| 69 | mcr p15, 0, r1, c1, c0, 0 @ disable MMU | 70 | mcr p15, 0, r1, c1, c0, 0 @ disable MMU |
| 70 | isb | 71 | isb |
| 71 | mov pc, r0 | 72 | mov pc, r0 |
| @@ -247,13 +248,16 @@ ENTRY(cpu_v7_do_resume) | |||
| 247 | mcr p15, 0, r7, c2, c0, 0 @ TTB 0 | 248 | mcr p15, 0, r7, c2, c0, 0 @ TTB 0 |
| 248 | mcr p15, 0, r8, c2, c0, 1 @ TTB 1 | 249 | mcr p15, 0, r8, c2, c0, 1 @ TTB 1 |
| 249 | mcr p15, 0, ip, c2, c0, 2 @ TTB control register | 250 | mcr p15, 0, ip, c2, c0, 2 @ TTB control register |
| 250 | mcr p15, 0, r10, c1, c0, 1 @ Auxiliary control register | 251 | mrc p15, 0, r4, c1, c0, 1 @ Read Auxiliary control register |
| 252 | teq r4, r10 @ Is it already set? | ||
| 253 | mcrne p15, 0, r10, c1, c0, 1 @ No, so write it | ||
| 251 | mcr p15, 0, r11, c1, c0, 2 @ Co-processor access control | 254 | mcr p15, 0, r11, c1, c0, 2 @ Co-processor access control |
| 252 | ldr r4, =PRRR @ PRRR | 255 | ldr r4, =PRRR @ PRRR |
| 253 | ldr r5, =NMRR @ NMRR | 256 | ldr r5, =NMRR @ NMRR |
| 254 | mcr p15, 0, r4, c10, c2, 0 @ write PRRR | 257 | mcr p15, 0, r4, c10, c2, 0 @ write PRRR |
| 255 | mcr p15, 0, r5, c10, c2, 1 @ write NMRR | 258 | mcr p15, 0, r5, c10, c2, 1 @ write NMRR |
| 256 | isb | 259 | isb |
| 260 | dsb | ||
| 257 | mov r0, r9 @ control register | 261 | mov r0, r9 @ control register |
| 258 | mov r2, r7, lsr #14 @ get TTB0 base | 262 | mov r2, r7, lsr #14 @ get TTB0 base |
| 259 | mov r2, r2, lsl #14 | 263 | mov r2, r2, lsl #14 |
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index 28c72a2006a1..755e1bf22681 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
| @@ -406,7 +406,7 @@ ENTRY(cpu_xsc3_set_pte_ext) | |||
| 406 | .align | 406 | .align |
| 407 | 407 | ||
| 408 | .globl cpu_xsc3_suspend_size | 408 | .globl cpu_xsc3_suspend_size |
| 409 | .equ cpu_xsc3_suspend_size, 4 * 8 | 409 | .equ cpu_xsc3_suspend_size, 4 * 7 |
| 410 | #ifdef CONFIG_PM_SLEEP | 410 | #ifdef CONFIG_PM_SLEEP |
| 411 | ENTRY(cpu_xsc3_do_suspend) | 411 | ENTRY(cpu_xsc3_do_suspend) |
| 412 | stmfd sp!, {r4 - r10, lr} | 412 | stmfd sp!, {r4 - r10, lr} |
| @@ -418,12 +418,12 @@ ENTRY(cpu_xsc3_do_suspend) | |||
| 418 | mrc p15, 0, r9, c1, c0, 1 @ auxiliary control reg | 418 | mrc p15, 0, r9, c1, c0, 1 @ auxiliary control reg |
| 419 | mrc p15, 0, r10, c1, c0, 0 @ control reg | 419 | mrc p15, 0, r10, c1, c0, 0 @ control reg |
| 420 | bic r4, r4, #2 @ clear frequency change bit | 420 | bic r4, r4, #2 @ clear frequency change bit |
| 421 | stmia r0, {r1, r4 - r10} @ store v:p offset + cp regs | 421 | stmia r0, {r4 - r10} @ store cp regs |
| 422 | ldmia sp!, {r4 - r10, pc} | 422 | ldmia sp!, {r4 - r10, pc} |
| 423 | ENDPROC(cpu_xsc3_do_suspend) | 423 | ENDPROC(cpu_xsc3_do_suspend) |
| 424 | 424 | ||
| 425 | ENTRY(cpu_xsc3_do_resume) | 425 | ENTRY(cpu_xsc3_do_resume) |
| 426 | ldmia r0, {r1, r4 - r10} @ load v:p offset + cp regs | 426 | ldmia r0, {r4 - r10} @ load cp regs |
| 427 | mov ip, #0 | 427 | mov ip, #0 |
| 428 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I & D caches, BTB | 428 | mcr p15, 0, ip, c7, c7, 0 @ invalidate I & D caches, BTB |
| 429 | mcr p15, 0, ip, c7, c10, 4 @ drain write (&fill) buffer | 429 | mcr p15, 0, ip, c7, c10, 4 @ drain write (&fill) buffer |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index fff68d0d521b..62cc8f981171 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
| @@ -351,7 +351,7 @@ centro MACH_CENTRO CENTRO 1944 | |||
| 351 | nokia_rx51 MACH_NOKIA_RX51 NOKIA_RX51 1955 | 351 | nokia_rx51 MACH_NOKIA_RX51 NOKIA_RX51 1955 |
| 352 | omap_zoom2 MACH_OMAP_ZOOM2 OMAP_ZOOM2 1967 | 352 | omap_zoom2 MACH_OMAP_ZOOM2 OMAP_ZOOM2 1967 |
| 353 | cpuat9260 MACH_CPUAT9260 CPUAT9260 1973 | 353 | cpuat9260 MACH_CPUAT9260 CPUAT9260 1973 |
| 354 | eukrea_cpuimx27 MACH_CPUIMX27 CPUIMX27 1975 | 354 | eukrea_cpuimx27 MACH_EUKREA_CPUIMX27 EUKREA_CPUIMX27 1975 |
| 355 | acs5k MACH_ACS5K ACS5K 1982 | 355 | acs5k MACH_ACS5K ACS5K 1982 |
| 356 | snapper_9260 MACH_SNAPPER_9260 SNAPPER_9260 1987 | 356 | snapper_9260 MACH_SNAPPER_9260 SNAPPER_9260 1987 |
| 357 | dsm320 MACH_DSM320 DSM320 1988 | 357 | dsm320 MACH_DSM320 DSM320 1988 |
| @@ -476,8 +476,8 @@ cns3420vb MACH_CNS3420VB CNS3420VB 2776 | |||
| 476 | omap4_panda MACH_OMAP4_PANDA OMAP4_PANDA 2791 | 476 | omap4_panda MACH_OMAP4_PANDA OMAP4_PANDA 2791 |
| 477 | ti8168evm MACH_TI8168EVM TI8168EVM 2800 | 477 | ti8168evm MACH_TI8168EVM TI8168EVM 2800 |
| 478 | teton_bga MACH_TETON_BGA TETON_BGA 2816 | 478 | teton_bga MACH_TETON_BGA TETON_BGA 2816 |
| 479 | eukrea_cpuimx25sd MACH_EUKREA_CPUIMX25 EUKREA_CPUIMX25 2820 | 479 | eukrea_cpuimx25sd MACH_EUKREA_CPUIMX25SD EUKREA_CPUIMX25SD 2820 |
| 480 | eukrea_cpuimx35sd MACH_EUKREA_CPUIMX35 EUKREA_CPUIMX35 2821 | 480 | eukrea_cpuimx35sd MACH_EUKREA_CPUIMX35SD EUKREA_CPUIMX35SD 2821 |
| 481 | eukrea_cpuimx51sd MACH_EUKREA_CPUIMX51SD EUKREA_CPUIMX51SD 2822 | 481 | eukrea_cpuimx51sd MACH_EUKREA_CPUIMX51SD EUKREA_CPUIMX51SD 2822 |
| 482 | eukrea_cpuimx51 MACH_EUKREA_CPUIMX51 EUKREA_CPUIMX51 2823 | 482 | eukrea_cpuimx51 MACH_EUKREA_CPUIMX51 EUKREA_CPUIMX51 2823 |
| 483 | smdkc210 MACH_SMDKC210 SMDKC210 2838 | 483 | smdkc210 MACH_SMDKC210 SMDKC210 2838 |
diff --git a/tools/perf/arch/arm/util/dwarf-regs.c b/tools/perf/arch/arm/util/dwarf-regs.c index fff6450c8c99..e8d5c551c69c 100644 --- a/tools/perf/arch/arm/util/dwarf-regs.c +++ b/tools/perf/arch/arm/util/dwarf-regs.c | |||
| @@ -8,7 +8,10 @@ | |||
| 8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <stdlib.h> | ||
| 12 | #ifndef __UCLIBC__ | ||
| 11 | #include <libio.h> | 13 | #include <libio.h> |
| 14 | #endif | ||
| 12 | #include <dwarf-regs.h> | 15 | #include <dwarf-regs.h> |
| 13 | 16 | ||
| 14 | struct pt_regs_dwarfnum { | 17 | struct pt_regs_dwarfnum { |
