diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2016-01-12 05:01:12 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2016-01-12 05:01:12 -0500 |
commit | 1f16f116b01c110db20ab808562c8b8bc3ee3d6e (patch) | |
tree | 44db563f64cf5f8d62af8f99a61e2b248c44ea3a /arch/mips | |
parent | 03724ac3d48f8f0e3caf1d30fa134f8fd96c94e2 (diff) | |
parent | f9eccf24615672896dc13251410c3f2f33a14f95 (diff) |
Merge branches 'clockevents/4.4-fixes' and 'clockevents/4.5-fixes' of http://git.linaro.org/people/daniel.lezcano/linux into timers/urgent
Pull in fixes from Daniel Lezcano:
- Fix the vt8500 timer leading to a system lock up when dealing with too
small delta (Roman Volkov)
- Select the CLKSRC_MMIO when the fsl_ftm_timer is enabled with COMPILE_TEST
(Daniel Lezcano)
- Prevent to compile timers using the 'iomem' API when the architecture has
not HAS_IOMEM set (Richard Weinberger)
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/include/asm/uaccess.h | 52 | ||||
-rw-r--r-- | arch/mips/kernel/cps-vec.S | 2 | ||||
-rw-r--r-- | arch/mips/kernel/mips_ksyms.c | 2 | ||||
-rw-r--r-- | arch/mips/kvm/emulate.c | 2 | ||||
-rw-r--r-- | arch/mips/kvm/locore.S | 16 | ||||
-rw-r--r-- | arch/mips/kvm/mips.c | 5 | ||||
-rw-r--r-- | arch/mips/lib/memset.S | 2 | ||||
-rw-r--r-- | arch/mips/mm/dma-default.c | 2 | ||||
-rw-r--r-- | arch/mips/pci/pci-rt2880.c | 5 | ||||
-rw-r--r-- | arch/mips/pmcs-msp71xx/msp_setup.c | 5 | ||||
-rw-r--r-- | arch/mips/sni/reset.c | 8 | ||||
-rw-r--r-- | arch/mips/vdso/Makefile | 4 |
12 files changed, 67 insertions, 38 deletions
diff --git a/arch/mips/include/asm/uaccess.h b/arch/mips/include/asm/uaccess.h index 5305d694ffe5..095ecafe6bd3 100644 --- a/arch/mips/include/asm/uaccess.h +++ b/arch/mips/include/asm/uaccess.h | |||
@@ -599,7 +599,7 @@ extern void __put_user_unknown(void); | |||
599 | * On error, the variable @x is set to zero. | 599 | * On error, the variable @x is set to zero. |
600 | */ | 600 | */ |
601 | #define __get_user_unaligned(x,ptr) \ | 601 | #define __get_user_unaligned(x,ptr) \ |
602 | __get_user__unalignednocheck((x),(ptr),sizeof(*(ptr))) | 602 | __get_user_unaligned_nocheck((x),(ptr),sizeof(*(ptr))) |
603 | 603 | ||
604 | /* | 604 | /* |
605 | * Yuck. We need two variants, one for 64bit operation and one | 605 | * Yuck. We need two variants, one for 64bit operation and one |
@@ -620,8 +620,8 @@ extern void __get_user_unaligned_unknown(void); | |||
620 | do { \ | 620 | do { \ |
621 | switch (size) { \ | 621 | switch (size) { \ |
622 | case 1: __get_data_asm(val, "lb", ptr); break; \ | 622 | case 1: __get_data_asm(val, "lb", ptr); break; \ |
623 | case 2: __get_user_unaligned_asm(val, "ulh", ptr); break; \ | 623 | case 2: __get_data_unaligned_asm(val, "ulh", ptr); break; \ |
624 | case 4: __get_user_unaligned_asm(val, "ulw", ptr); break; \ | 624 | case 4: __get_data_unaligned_asm(val, "ulw", ptr); break; \ |
625 | case 8: __GET_USER_UNALIGNED_DW(val, ptr); break; \ | 625 | case 8: __GET_USER_UNALIGNED_DW(val, ptr); break; \ |
626 | default: __get_user_unaligned_unknown(); break; \ | 626 | default: __get_user_unaligned_unknown(); break; \ |
627 | } \ | 627 | } \ |
@@ -1122,9 +1122,15 @@ extern size_t __copy_in_user_eva(void *__to, const void *__from, size_t __n); | |||
1122 | __cu_to = (to); \ | 1122 | __cu_to = (to); \ |
1123 | __cu_from = (from); \ | 1123 | __cu_from = (from); \ |
1124 | __cu_len = (n); \ | 1124 | __cu_len = (n); \ |
1125 | might_fault(); \ | 1125 | if (eva_kernel_access()) { \ |
1126 | __cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \ | 1126 | __cu_len = __invoke_copy_from_kernel(__cu_to, \ |
1127 | __cu_len); \ | 1127 | __cu_from, \ |
1128 | __cu_len); \ | ||
1129 | } else { \ | ||
1130 | might_fault(); \ | ||
1131 | __cu_len = __invoke_copy_from_user(__cu_to, __cu_from, \ | ||
1132 | __cu_len); \ | ||
1133 | } \ | ||
1128 | __cu_len; \ | 1134 | __cu_len; \ |
1129 | }) | 1135 | }) |
1130 | 1136 | ||
@@ -1229,16 +1235,28 @@ __clear_user(void __user *addr, __kernel_size_t size) | |||
1229 | { | 1235 | { |
1230 | __kernel_size_t res; | 1236 | __kernel_size_t res; |
1231 | 1237 | ||
1232 | might_fault(); | 1238 | if (eva_kernel_access()) { |
1233 | __asm__ __volatile__( | 1239 | __asm__ __volatile__( |
1234 | "move\t$4, %1\n\t" | 1240 | "move\t$4, %1\n\t" |
1235 | "move\t$5, $0\n\t" | 1241 | "move\t$5, $0\n\t" |
1236 | "move\t$6, %2\n\t" | 1242 | "move\t$6, %2\n\t" |
1237 | __MODULE_JAL(__bzero) | 1243 | __MODULE_JAL(__bzero_kernel) |
1238 | "move\t%0, $6" | 1244 | "move\t%0, $6" |
1239 | : "=r" (res) | 1245 | : "=r" (res) |
1240 | : "r" (addr), "r" (size) | 1246 | : "r" (addr), "r" (size) |
1241 | : "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"); | 1247 | : "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"); |
1248 | } else { | ||
1249 | might_fault(); | ||
1250 | __asm__ __volatile__( | ||
1251 | "move\t$4, %1\n\t" | ||
1252 | "move\t$5, $0\n\t" | ||
1253 | "move\t$6, %2\n\t" | ||
1254 | __MODULE_JAL(__bzero) | ||
1255 | "move\t%0, $6" | ||
1256 | : "=r" (res) | ||
1257 | : "r" (addr), "r" (size) | ||
1258 | : "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"); | ||
1259 | } | ||
1242 | 1260 | ||
1243 | return res; | 1261 | return res; |
1244 | } | 1262 | } |
@@ -1384,7 +1402,7 @@ static inline long strlen_user(const char __user *s) | |||
1384 | might_fault(); | 1402 | might_fault(); |
1385 | __asm__ __volatile__( | 1403 | __asm__ __volatile__( |
1386 | "move\t$4, %1\n\t" | 1404 | "move\t$4, %1\n\t" |
1387 | __MODULE_JAL(__strlen_kernel_asm) | 1405 | __MODULE_JAL(__strlen_user_asm) |
1388 | "move\t%0, $2" | 1406 | "move\t%0, $2" |
1389 | : "=r" (res) | 1407 | : "=r" (res) |
1390 | : "r" (s) | 1408 | : "r" (s) |
diff --git a/arch/mips/kernel/cps-vec.S b/arch/mips/kernel/cps-vec.S index 8fd5a276cad2..ac81edd44563 100644 --- a/arch/mips/kernel/cps-vec.S +++ b/arch/mips/kernel/cps-vec.S | |||
@@ -257,7 +257,6 @@ LEAF(mips_cps_core_init) | |||
257 | has_mt t0, 3f | 257 | has_mt t0, 3f |
258 | 258 | ||
259 | .set push | 259 | .set push |
260 | .set mips64r2 | ||
261 | .set mt | 260 | .set mt |
262 | 261 | ||
263 | /* Only allow 1 TC per VPE to execute... */ | 262 | /* Only allow 1 TC per VPE to execute... */ |
@@ -376,7 +375,6 @@ LEAF(mips_cps_boot_vpes) | |||
376 | nop | 375 | nop |
377 | 376 | ||
378 | .set push | 377 | .set push |
379 | .set mips64r2 | ||
380 | .set mt | 378 | .set mt |
381 | 379 | ||
382 | 1: /* Enter VPE configuration state */ | 380 | 1: /* Enter VPE configuration state */ |
diff --git a/arch/mips/kernel/mips_ksyms.c b/arch/mips/kernel/mips_ksyms.c index 291af0b5c482..e2b6ab74643d 100644 --- a/arch/mips/kernel/mips_ksyms.c +++ b/arch/mips/kernel/mips_ksyms.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <asm/fpu.h> | 17 | #include <asm/fpu.h> |
18 | #include <asm/msa.h> | 18 | #include <asm/msa.h> |
19 | 19 | ||
20 | extern void *__bzero_kernel(void *__s, size_t __count); | ||
20 | extern void *__bzero(void *__s, size_t __count); | 21 | extern void *__bzero(void *__s, size_t __count); |
21 | extern long __strncpy_from_kernel_nocheck_asm(char *__to, | 22 | extern long __strncpy_from_kernel_nocheck_asm(char *__to, |
22 | const char *__from, long __len); | 23 | const char *__from, long __len); |
@@ -64,6 +65,7 @@ EXPORT_SYMBOL(__copy_from_user_eva); | |||
64 | EXPORT_SYMBOL(__copy_in_user_eva); | 65 | EXPORT_SYMBOL(__copy_in_user_eva); |
65 | EXPORT_SYMBOL(__copy_to_user_eva); | 66 | EXPORT_SYMBOL(__copy_to_user_eva); |
66 | EXPORT_SYMBOL(__copy_user_inatomic_eva); | 67 | EXPORT_SYMBOL(__copy_user_inatomic_eva); |
68 | EXPORT_SYMBOL(__bzero_kernel); | ||
67 | #endif | 69 | #endif |
68 | EXPORT_SYMBOL(__bzero); | 70 | EXPORT_SYMBOL(__bzero); |
69 | EXPORT_SYMBOL(__strncpy_from_kernel_nocheck_asm); | 71 | EXPORT_SYMBOL(__strncpy_from_kernel_nocheck_asm); |
diff --git a/arch/mips/kvm/emulate.c b/arch/mips/kvm/emulate.c index d5fa3eaf39a1..41b1b090f56f 100644 --- a/arch/mips/kvm/emulate.c +++ b/arch/mips/kvm/emulate.c | |||
@@ -1581,7 +1581,7 @@ enum emulation_result kvm_mips_emulate_cache(uint32_t inst, uint32_t *opc, | |||
1581 | 1581 | ||
1582 | base = (inst >> 21) & 0x1f; | 1582 | base = (inst >> 21) & 0x1f; |
1583 | op_inst = (inst >> 16) & 0x1f; | 1583 | op_inst = (inst >> 16) & 0x1f; |
1584 | offset = inst & 0xffff; | 1584 | offset = (int16_t)inst; |
1585 | cache = (inst >> 16) & 0x3; | 1585 | cache = (inst >> 16) & 0x3; |
1586 | op = (inst >> 18) & 0x7; | 1586 | op = (inst >> 18) & 0x7; |
1587 | 1587 | ||
diff --git a/arch/mips/kvm/locore.S b/arch/mips/kvm/locore.S index 7bab3a4e8f7d..7e2210846b8b 100644 --- a/arch/mips/kvm/locore.S +++ b/arch/mips/kvm/locore.S | |||
@@ -157,9 +157,11 @@ FEXPORT(__kvm_mips_vcpu_run) | |||
157 | 157 | ||
158 | FEXPORT(__kvm_mips_load_asid) | 158 | FEXPORT(__kvm_mips_load_asid) |
159 | /* Set the ASID for the Guest Kernel */ | 159 | /* Set the ASID for the Guest Kernel */ |
160 | INT_SLL t0, t0, 1 /* with kseg0 @ 0x40000000, kernel */ | 160 | PTR_L t0, VCPU_COP0(k1) |
161 | /* addresses shift to 0x80000000 */ | 161 | LONG_L t0, COP0_STATUS(t0) |
162 | bltz t0, 1f /* If kernel */ | 162 | andi t0, KSU_USER | ST0_ERL | ST0_EXL |
163 | xori t0, KSU_USER | ||
164 | bnez t0, 1f /* If kernel */ | ||
163 | INT_ADDIU t1, k1, VCPU_GUEST_KERNEL_ASID /* (BD) */ | 165 | INT_ADDIU t1, k1, VCPU_GUEST_KERNEL_ASID /* (BD) */ |
164 | INT_ADDIU t1, k1, VCPU_GUEST_USER_ASID /* else user */ | 166 | INT_ADDIU t1, k1, VCPU_GUEST_USER_ASID /* else user */ |
165 | 1: | 167 | 1: |
@@ -474,9 +476,11 @@ __kvm_mips_return_to_guest: | |||
474 | mtc0 t0, CP0_EPC | 476 | mtc0 t0, CP0_EPC |
475 | 477 | ||
476 | /* Set the ASID for the Guest Kernel */ | 478 | /* Set the ASID for the Guest Kernel */ |
477 | INT_SLL t0, t0, 1 /* with kseg0 @ 0x40000000, kernel */ | 479 | PTR_L t0, VCPU_COP0(k1) |
478 | /* addresses shift to 0x80000000 */ | 480 | LONG_L t0, COP0_STATUS(t0) |
479 | bltz t0, 1f /* If kernel */ | 481 | andi t0, KSU_USER | ST0_ERL | ST0_EXL |
482 | xori t0, KSU_USER | ||
483 | bnez t0, 1f /* If kernel */ | ||
480 | INT_ADDIU t1, k1, VCPU_GUEST_KERNEL_ASID /* (BD) */ | 484 | INT_ADDIU t1, k1, VCPU_GUEST_KERNEL_ASID /* (BD) */ |
481 | INT_ADDIU t1, k1, VCPU_GUEST_USER_ASID /* else user */ | 485 | INT_ADDIU t1, k1, VCPU_GUEST_USER_ASID /* else user */ |
482 | 1: | 486 | 1: |
diff --git a/arch/mips/kvm/mips.c b/arch/mips/kvm/mips.c index 49ff3bfc007e..b9b803facdbf 100644 --- a/arch/mips/kvm/mips.c +++ b/arch/mips/kvm/mips.c | |||
@@ -279,7 +279,7 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id) | |||
279 | 279 | ||
280 | if (!gebase) { | 280 | if (!gebase) { |
281 | err = -ENOMEM; | 281 | err = -ENOMEM; |
282 | goto out_free_cpu; | 282 | goto out_uninit_cpu; |
283 | } | 283 | } |
284 | kvm_debug("Allocated %d bytes for KVM Exception Handlers @ %p\n", | 284 | kvm_debug("Allocated %d bytes for KVM Exception Handlers @ %p\n", |
285 | ALIGN(size, PAGE_SIZE), gebase); | 285 | ALIGN(size, PAGE_SIZE), gebase); |
@@ -343,6 +343,9 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm, unsigned int id) | |||
343 | out_free_gebase: | 343 | out_free_gebase: |
344 | kfree(gebase); | 344 | kfree(gebase); |
345 | 345 | ||
346 | out_uninit_cpu: | ||
347 | kvm_vcpu_uninit(vcpu); | ||
348 | |||
346 | out_free_cpu: | 349 | out_free_cpu: |
347 | kfree(vcpu); | 350 | kfree(vcpu); |
348 | 351 | ||
diff --git a/arch/mips/lib/memset.S b/arch/mips/lib/memset.S index b8e63fd00375..8f0019a2e5c8 100644 --- a/arch/mips/lib/memset.S +++ b/arch/mips/lib/memset.S | |||
@@ -283,6 +283,8 @@ LEAF(memset) | |||
283 | 1: | 283 | 1: |
284 | #ifndef CONFIG_EVA | 284 | #ifndef CONFIG_EVA |
285 | FEXPORT(__bzero) | 285 | FEXPORT(__bzero) |
286 | #else | ||
287 | FEXPORT(__bzero_kernel) | ||
286 | #endif | 288 | #endif |
287 | __BUILD_BZERO LEGACY_MODE | 289 | __BUILD_BZERO LEGACY_MODE |
288 | 290 | ||
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index d8117be729a2..730d394ce5f0 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c | |||
@@ -145,7 +145,7 @@ static void *mips_dma_alloc_coherent(struct device *dev, size_t size, | |||
145 | 145 | ||
146 | gfp = massage_gfp_flags(dev, gfp); | 146 | gfp = massage_gfp_flags(dev, gfp); |
147 | 147 | ||
148 | if (IS_ENABLED(CONFIG_DMA_CMA) && !(gfp & GFP_ATOMIC)) | 148 | if (IS_ENABLED(CONFIG_DMA_CMA) && gfpflags_allow_blocking(gfp)) |
149 | page = dma_alloc_from_contiguous(dev, | 149 | page = dma_alloc_from_contiguous(dev, |
150 | count, get_order(size)); | 150 | count, get_order(size)); |
151 | if (!page) | 151 | if (!page) |
diff --git a/arch/mips/pci/pci-rt2880.c b/arch/mips/pci/pci-rt2880.c index 8a978022630b..a245cad4372a 100644 --- a/arch/mips/pci/pci-rt2880.c +++ b/arch/mips/pci/pci-rt2880.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * by the Free Software Foundation. | 11 | * by the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <linux/delay.h> | ||
14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
15 | #include <linux/pci.h> | 16 | #include <linux/pci.h> |
16 | #include <linux/io.h> | 17 | #include <linux/io.h> |
@@ -220,7 +221,6 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | |||
220 | static int rt288x_pci_probe(struct platform_device *pdev) | 221 | static int rt288x_pci_probe(struct platform_device *pdev) |
221 | { | 222 | { |
222 | void __iomem *io_map_base; | 223 | void __iomem *io_map_base; |
223 | int i; | ||
224 | 224 | ||
225 | rt2880_pci_base = ioremap_nocache(RT2880_PCI_BASE, PAGE_SIZE); | 225 | rt2880_pci_base = ioremap_nocache(RT2880_PCI_BASE, PAGE_SIZE); |
226 | 226 | ||
@@ -232,8 +232,7 @@ static int rt288x_pci_probe(struct platform_device *pdev) | |||
232 | ioport_resource.end = RT2880_PCI_IO_BASE + RT2880_PCI_IO_SIZE - 1; | 232 | ioport_resource.end = RT2880_PCI_IO_BASE + RT2880_PCI_IO_SIZE - 1; |
233 | 233 | ||
234 | rt2880_pci_reg_write(0, RT2880_PCI_REG_PCICFG_ADDR); | 234 | rt2880_pci_reg_write(0, RT2880_PCI_REG_PCICFG_ADDR); |
235 | for (i = 0; i < 0xfffff; i++) | 235 | udelay(1); |
236 | ; | ||
237 | 236 | ||
238 | rt2880_pci_reg_write(0x79, RT2880_PCI_REG_ARBCTL); | 237 | rt2880_pci_reg_write(0x79, RT2880_PCI_REG_ARBCTL); |
239 | rt2880_pci_reg_write(0x07FF0001, RT2880_PCI_REG_BAR0SETUP_ADDR); | 238 | rt2880_pci_reg_write(0x07FF0001, RT2880_PCI_REG_BAR0SETUP_ADDR); |
diff --git a/arch/mips/pmcs-msp71xx/msp_setup.c b/arch/mips/pmcs-msp71xx/msp_setup.c index 4f925e06c414..9d293b3e9130 100644 --- a/arch/mips/pmcs-msp71xx/msp_setup.c +++ b/arch/mips/pmcs-msp71xx/msp_setup.c | |||
@@ -10,6 +10,8 @@ | |||
10 | * option) any later version. | 10 | * option) any later version. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/delay.h> | ||
14 | |||
13 | #include <asm/bootinfo.h> | 15 | #include <asm/bootinfo.h> |
14 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
15 | #include <asm/idle.h> | 17 | #include <asm/idle.h> |
@@ -37,7 +39,6 @@ extern void msp_serial_setup(void); | |||
37 | void msp7120_reset(void) | 39 | void msp7120_reset(void) |
38 | { | 40 | { |
39 | void *start, *end, *iptr; | 41 | void *start, *end, *iptr; |
40 | register int i; | ||
41 | 42 | ||
42 | /* Diasble all interrupts */ | 43 | /* Diasble all interrupts */ |
43 | local_irq_disable(); | 44 | local_irq_disable(); |
@@ -77,7 +78,7 @@ void msp7120_reset(void) | |||
77 | */ | 78 | */ |
78 | 79 | ||
79 | /* Wait a bit for the DDRC to settle */ | 80 | /* Wait a bit for the DDRC to settle */ |
80 | for (i = 0; i < 100000000; i++); | 81 | mdelay(125); |
81 | 82 | ||
82 | #if defined(CONFIG_PMC_MSP7120_GW) | 83 | #if defined(CONFIG_PMC_MSP7120_GW) |
83 | /* | 84 | /* |
diff --git a/arch/mips/sni/reset.c b/arch/mips/sni/reset.c index 244f9427625b..6afa34346b81 100644 --- a/arch/mips/sni/reset.c +++ b/arch/mips/sni/reset.c | |||
@@ -3,6 +3,8 @@ | |||
3 | * | 3 | * |
4 | * Reset a SNI machine. | 4 | * Reset a SNI machine. |
5 | */ | 5 | */ |
6 | #include <linux/delay.h> | ||
7 | |||
6 | #include <asm/io.h> | 8 | #include <asm/io.h> |
7 | #include <asm/reboot.h> | 9 | #include <asm/reboot.h> |
8 | #include <asm/sni.h> | 10 | #include <asm/sni.h> |
@@ -24,7 +26,7 @@ static inline void kb_wait(void) | |||
24 | /* XXX This ends up at the ARC firmware prompt ... */ | 26 | /* XXX This ends up at the ARC firmware prompt ... */ |
25 | void sni_machine_restart(char *command) | 27 | void sni_machine_restart(char *command) |
26 | { | 28 | { |
27 | int i, j; | 29 | int i; |
28 | 30 | ||
29 | /* This does a normal via the keyboard controller like a PC. | 31 | /* This does a normal via the keyboard controller like a PC. |
30 | We can do that easier ... */ | 32 | We can do that easier ... */ |
@@ -32,9 +34,9 @@ void sni_machine_restart(char *command) | |||
32 | for (;;) { | 34 | for (;;) { |
33 | for (i = 0; i < 100; i++) { | 35 | for (i = 0; i < 100; i++) { |
34 | kb_wait(); | 36 | kb_wait(); |
35 | for (j = 0; j < 100000 ; j++) | 37 | udelay(50); |
36 | /* nothing */; | ||
37 | outb_p(0xfe, 0x64); /* pulse reset low */ | 38 | outb_p(0xfe, 0x64); /* pulse reset low */ |
39 | udelay(50); | ||
38 | } | 40 | } |
39 | } | 41 | } |
40 | } | 42 | } |
diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile index ef5f348f386a..018f8c7b94f2 100644 --- a/arch/mips/vdso/Makefile +++ b/arch/mips/vdso/Makefile | |||
@@ -26,8 +26,8 @@ aflags-vdso := $(ccflags-vdso) \ | |||
26 | # the comments on that file. | 26 | # the comments on that file. |
27 | # | 27 | # |
28 | ifndef CONFIG_CPU_MIPSR6 | 28 | ifndef CONFIG_CPU_MIPSR6 |
29 | ifeq ($(call ld-ifversion, -gt, 22400000, y),) | 29 | ifeq ($(call ld-ifversion, -lt, 22500000, y),) |
30 | $(warning MIPS VDSO requires binutils > 2.24) | 30 | $(warning MIPS VDSO requires binutils >= 2.25) |
31 | obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y)) | 31 | obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y)) |
32 | ccflags-vdso += -DDISABLE_MIPS_VDSO | 32 | ccflags-vdso += -DDISABLE_MIPS_VDSO |
33 | endif | 33 | endif |