diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-11 14:56:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-11 14:56:40 -0400 |
commit | ede1d63fccb7a397832ddbdee5951ec65194d93e (patch) | |
tree | c9cda036db9a4bc125cb27b282899500e6e8cf9e /arch/arm/include | |
parent | b42e6dc66bf379d7d44d419dda8733c890838751 (diff) | |
parent | 98f07013149d4be18ff16cfc5b43218f3a70afd6 (diff) |
Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
Pull second set of ARM changes from Russell King:
"This is the remainder of the ARM changes for this merge window.
Included in this request are:
- fixes for kprobes for big-endian support
- fix tracing in soft_restart
- avoid phys address overflow in kdump code
- fix reporting of read-only pmd bits in kernel page table dump
- remove unnecessary (and possibly buggy) call to outer_flush_all()
- fix a three sparse warnings (missing header file for function
prototypes)
- fix pj4 crashing single zImage (thanks to arm-soc merging changes
which enables this with knowledge that the corresponding fix had
not even been submitted for my tree before the merge window opened)
- vfp macro cleanups
- dump register state on undefined instruction userspace faults when
debugging"
* 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
Dump the registers on undefined instruction userspace faults
ARM: 8018/1: Add {inc,dec}_preempt_count asm macros
ARM: 8017/1: Move asm macro get_thread_info to asm/assembler.h
ARM: 8016/1: Check cpu id in pj4_cp0_init.
ARM: 8015/1: Add cpu_is_pj4 to distinguish PJ4 because it has some differences with V7
ARM: add missing system_misc.h include to process.c
ARM: 8009/1: dcscb.c: remove call to outer_flush_all()
ARM: 8014/1: mm: fix reporting of read-only PMD bits
ARM: 8012/1: kdump: Avoid overflow when converting pfn to physaddr
ARM: 8010/1: avoid tracers in soft_restart
ARM: kprobes-test: Workaround GAS .align bug
ARM: kprobes-test: use <asm/opcodes.h> for Thumb instruction building
ARM: kprobes-test: use <asm/opcodes.h> for ARM instruction building
ARM: kprobes-test: use <asm/opcodes.h> for instruction accesses
ARM: probes: fix instruction fetch order with <asm/opcodes.h>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/assembler.h | 42 | ||||
-rw-r--r-- | arch/arm/include/asm/cputype.h | 19 |
2 files changed, 61 insertions, 0 deletions
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h index 380ac4f20000..b974184f9941 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/domain.h> | 24 | #include <asm/domain.h> |
25 | #include <asm/opcodes-virt.h> | 25 | #include <asm/opcodes-virt.h> |
26 | #include <asm/asm-offsets.h> | ||
26 | 27 | ||
27 | #define IOMEM(x) (x) | 28 | #define IOMEM(x) (x) |
28 | 29 | ||
@@ -174,6 +175,47 @@ | |||
174 | restore_irqs_notrace \oldcpsr | 175 | restore_irqs_notrace \oldcpsr |
175 | .endm | 176 | .endm |
176 | 177 | ||
178 | /* | ||
179 | * Get current thread_info. | ||
180 | */ | ||
181 | .macro get_thread_info, rd | ||
182 | ARM( mov \rd, sp, lsr #13 ) | ||
183 | THUMB( mov \rd, sp ) | ||
184 | THUMB( lsr \rd, \rd, #13 ) | ||
185 | mov \rd, \rd, lsl #13 | ||
186 | .endm | ||
187 | |||
188 | /* | ||
189 | * Increment/decrement the preempt count. | ||
190 | */ | ||
191 | #ifdef CONFIG_PREEMPT_COUNT | ||
192 | .macro inc_preempt_count, ti, tmp | ||
193 | ldr \tmp, [\ti, #TI_PREEMPT] @ get preempt count | ||
194 | add \tmp, \tmp, #1 @ increment it | ||
195 | str \tmp, [\ti, #TI_PREEMPT] | ||
196 | .endm | ||
197 | |||
198 | .macro dec_preempt_count, ti, tmp | ||
199 | ldr \tmp, [\ti, #TI_PREEMPT] @ get preempt count | ||
200 | sub \tmp, \tmp, #1 @ decrement it | ||
201 | str \tmp, [\ti, #TI_PREEMPT] | ||
202 | .endm | ||
203 | |||
204 | .macro dec_preempt_count_ti, ti, tmp | ||
205 | get_thread_info \ti | ||
206 | dec_preempt_count \ti, \tmp | ||
207 | .endm | ||
208 | #else | ||
209 | .macro inc_preempt_count, ti, tmp | ||
210 | .endm | ||
211 | |||
212 | .macro dec_preempt_count, ti, tmp | ||
213 | .endm | ||
214 | |||
215 | .macro dec_preempt_count_ti, ti, tmp | ||
216 | .endm | ||
217 | #endif | ||
218 | |||
177 | #define USER(x...) \ | 219 | #define USER(x...) \ |
178 | 9999: x; \ | 220 | 9999: x; \ |
179 | .pushsection __ex_table,"a"; \ | 221 | .pushsection __ex_table,"a"; \ |
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h index 42f0889f0584..c651e3b26ec7 100644 --- a/arch/arm/include/asm/cputype.h +++ b/arch/arm/include/asm/cputype.h | |||
@@ -221,4 +221,23 @@ static inline int cpu_is_xsc3(void) | |||
221 | #define cpu_is_xscale() 1 | 221 | #define cpu_is_xscale() 1 |
222 | #endif | 222 | #endif |
223 | 223 | ||
224 | /* | ||
225 | * Marvell's PJ4 core is based on V7 version. It has some modification | ||
226 | * for coprocessor setting. For this reason, we need a way to distinguish | ||
227 | * it. | ||
228 | */ | ||
229 | #ifndef CONFIG_CPU_PJ4 | ||
230 | #define cpu_is_pj4() 0 | ||
231 | #else | ||
232 | static inline int cpu_is_pj4(void) | ||
233 | { | ||
234 | unsigned int id; | ||
235 | |||
236 | id = read_cpuid_id(); | ||
237 | if ((id & 0xfffffff0) == 0x562f5840) | ||
238 | return 1; | ||
239 | |||
240 | return 0; | ||
241 | } | ||
242 | #endif | ||
224 | #endif | 243 | #endif |