aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2015-11-12 05:36:03 -0500
committerRalf Baechle <ralf@linux-mips.org>2015-11-12 05:36:03 -0500
commitda34232641a91ca785a787c23c158488e459b938 (patch)
tree8be0342fa443f92a7e0f36a5c11cf094af2747d4
parentbf463f2f7510771db180908507005379850dade0 (diff)
parent3bfb7224566593219dbd67474dacb23ef7c080e3 (diff)
Merge branch '4.3-fixes' into mips-for-linux-next
-rw-r--r--arch/mips/include/asm/atomic.h2
-rw-r--r--arch/mips/include/asm/cdmm.h11
-rw-r--r--arch/mips/kernel/idle.c5
-rw-r--r--arch/mips/kernel/traps.c2
-rw-r--r--arch/mips/kernel/vmlinux.lds.S10
5 files changed, 26 insertions, 4 deletions
diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h
index 4c42fd9af777..b34781752244 100644
--- a/arch/mips/include/asm/atomic.h
+++ b/arch/mips/include/asm/atomic.h
@@ -507,7 +507,7 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
507 * @u: ...unless v is equal to u. 507 * @u: ...unless v is equal to u.
508 * 508 *
509 * Atomically adds @a to @v, so long as it was not @u. 509 * Atomically adds @a to @v, so long as it was not @u.
510 * Returns the old value of @v. 510 * Returns true iff @v was not @u.
511 */ 511 */
512static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u) 512static __inline__ int atomic64_add_unless(atomic64_t *v, long a, long u)
513{ 513{
diff --git a/arch/mips/include/asm/cdmm.h b/arch/mips/include/asm/cdmm.h
index bece2064cc8c..c06dbf8ba937 100644
--- a/arch/mips/include/asm/cdmm.h
+++ b/arch/mips/include/asm/cdmm.h
@@ -84,6 +84,17 @@ void mips_cdmm_driver_unregister(struct mips_cdmm_driver *);
84 module_driver(__mips_cdmm_driver, mips_cdmm_driver_register, \ 84 module_driver(__mips_cdmm_driver, mips_cdmm_driver_register, \
85 mips_cdmm_driver_unregister) 85 mips_cdmm_driver_unregister)
86 86
87/*
88 * builtin_mips_cdmm_driver() - Helper macro for drivers that don't do anything
89 * special in init and have no exit. This eliminates some boilerplate. Each
90 * driver may only use this macro once, and calling it replaces device_initcall
91 * (or in some cases, the legacy __initcall). This is meant to be a direct
92 * parallel of module_mips_cdmm_driver() above but without the __exit stuff that
93 * is not used for builtin cases.
94 */
95#define builtin_mips_cdmm_driver(__mips_cdmm_driver) \
96 builtin_driver(__mips_cdmm_driver, mips_cdmm_driver_register)
97
87/* drivers/tty/mips_ejtag_fdc.c */ 98/* drivers/tty/mips_ejtag_fdc.c */
88 99
89#ifdef CONFIG_MIPS_EJTAG_FDC_EARLYCON 100#ifdef CONFIG_MIPS_EJTAG_FDC_EARLYCON
diff --git a/arch/mips/kernel/idle.c b/arch/mips/kernel/idle.c
index 35af61530de1..46794d64c0bf 100644
--- a/arch/mips/kernel/idle.c
+++ b/arch/mips/kernel/idle.c
@@ -171,7 +171,6 @@ void __init check_wait(void)
171 case CPU_BMIPS3300: 171 case CPU_BMIPS3300:
172 case CPU_BMIPS4350: 172 case CPU_BMIPS4350:
173 case CPU_BMIPS4380: 173 case CPU_BMIPS4380:
174 case CPU_BMIPS5000:
175 case CPU_CAVIUM_OCTEON: 174 case CPU_CAVIUM_OCTEON:
176 case CPU_CAVIUM_OCTEON_PLUS: 175 case CPU_CAVIUM_OCTEON_PLUS:
177 case CPU_CAVIUM_OCTEON2: 176 case CPU_CAVIUM_OCTEON2:
@@ -182,7 +181,9 @@ void __init check_wait(void)
182 case CPU_XLP: 181 case CPU_XLP:
183 cpu_wait = r4k_wait; 182 cpu_wait = r4k_wait;
184 break; 183 break;
185 184 case CPU_BMIPS5000:
185 cpu_wait = r4k_wait_irqoff;
186 break;
186 case CPU_RM7000: 187 case CPU_RM7000:
187 cpu_wait = rm7k_wait_irqoff; 188 cpu_wait = rm7k_wait_irqoff;
188 break; 189 break;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 4e106d52f304..886cb1976e90 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1857,12 +1857,14 @@ void __noreturn nmi_exception_handler(struct pt_regs *regs)
1857{ 1857{
1858 char str[100]; 1858 char str[100];
1859 1859
1860 nmi_enter();
1860 raw_notifier_call_chain(&nmi_chain, 0, regs); 1861 raw_notifier_call_chain(&nmi_chain, 0, regs);
1861 bust_spinlocks(1); 1862 bust_spinlocks(1);
1862 snprintf(str, 100, "CPU%d NMI taken, CP0_EPC=%lx\n", 1863 snprintf(str, 100, "CPU%d NMI taken, CP0_EPC=%lx\n",
1863 smp_processor_id(), regs->cp0_epc); 1864 smp_processor_id(), regs->cp0_epc);
1864 regs->cp0_epc = read_c0_errorepc(); 1865 regs->cp0_epc = read_c0_errorepc();
1865 die(str, regs); 1866 die(str, regs);
1867 nmi_exit();
1866} 1868}
1867 1869
1868#define VECTORSPACING 0x100 /* for EI/VI mode */ 1870#define VECTORSPACING 0x100 /* for EI/VI mode */
diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S
index f4c23d9023be..0a93e83cd014 100644
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -17,7 +17,9 @@ OUTPUT_ARCH(mips)
17ENTRY(kernel_entry) 17ENTRY(kernel_entry)
18PHDRS { 18PHDRS {
19 text PT_LOAD FLAGS(7); /* RWX */ 19 text PT_LOAD FLAGS(7); /* RWX */
20#ifndef CONFIG_CAVIUM_OCTEON_SOC
20 note PT_NOTE FLAGS(4); /* R__ */ 21 note PT_NOTE FLAGS(4); /* R__ */
22#endif /* CAVIUM_OCTEON_SOC */
21} 23}
22 24
23#ifdef CONFIG_32BIT 25#ifdef CONFIG_32BIT
@@ -71,7 +73,12 @@ SECTIONS
71 __stop___dbe_table = .; 73 __stop___dbe_table = .;
72 } 74 }
73 75
74 NOTES :text :note 76#ifdef CONFIG_CAVIUM_OCTEON_SOC
77#define NOTES_HEADER
78#else /* CONFIG_CAVIUM_OCTEON_SOC */
79#define NOTES_HEADER :note
80#endif /* CONFIG_CAVIUM_OCTEON_SOC */
81 NOTES :text NOTES_HEADER
75 .dummy : { *(.dummy) } :text 82 .dummy : { *(.dummy) } :text
76 83
77 _sdata = .; /* Start of data section */ 84 _sdata = .; /* Start of data section */
@@ -186,6 +193,7 @@ SECTIONS
186 DISCARDS 193 DISCARDS
187 /DISCARD/ : { 194 /DISCARD/ : {
188 /* ABI crap starts here */ 195 /* ABI crap starts here */
196 *(.MIPS.abiflags)
189 *(.MIPS.options) 197 *(.MIPS.options)
190 *(.options) 198 *(.options)
191 *(.pdr) 199 *(.pdr)