diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-11 21:15:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-02-11 21:15:38 -0500 |
commit | d3f180ea1a44aecba1b0dab2a253428e77f906bf (patch) | |
tree | 0be6eaf1eb3fd32c934bd070a3d758696f417c93 /arch/powerpc/kernel/entry_64.S | |
parent | 6b00f7efb5303418c231994c91fb8239f5ada260 (diff) | |
parent | a6130ed253a931d2169c26ab0958d81b0dce4d6e (diff) |
Merge tag 'powerpc-3.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux
Pull powerpc updates from Michael Ellerman:
- Update of all defconfigs
- Addition of a bunch of config options to modernise our defconfigs
- Some PS3 updates from Geoff
- Optimised memcmp for 64 bit from Anton
- Fix for kprobes that allows 'perf probe' to work from Naveen
- Several cxl updates from Ian & Ryan
- Expanded support for the '24x7' PMU from Cody & Sukadev
- Freescale updates from Scott:
"Highlights include 8xx optimizations, some more work on datapath
device tree content, e300 machine check support, t1040 corenet
error reporting, and various cleanups and fixes"
* tag 'powerpc-3.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux: (102 commits)
cxl: Add missing return statement after handling AFU errror
cxl: Fail AFU initialisation if an invalid configuration record is found
cxl: Export optional AFU configuration record in sysfs
powerpc/mm: Warn on flushing tlb page in kernel context
powerpc/powernv: Add OPAL soft-poweroff routine
powerpc/perf/hv-24x7: Document sysfs event description entries
powerpc/perf/hv-gpci: add the remaining gpci requests
powerpc/perf/{hv-gpci, hv-common}: generate requests with counters annotated
powerpc/perf/hv-24x7: parse catalog and populate sysfs with events
perf: define EVENT_DEFINE_RANGE_FORMAT_LITE helper
perf: add PMU_EVENT_ATTR_STRING() helper
perf: provide sysfs_show for struct perf_pmu_events_attr
powerpc/kernel: Avoid initializing device-tree pointer twice
powerpc: Remove old compile time disabled syscall tracing code
powerpc/kernel: Make syscall_exit a local label
cxl: Fix device_node reference counting
powerpc/mm: bail out early when flushing TLB page
powerpc: defconfigs: add MTD_SPI_NOR (new dependency for M25P80)
perf/powerpc: reset event hw state when adding it to the PMU
powerpc/qe: Use strlcpy()
...
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 37 |
1 files changed, 12 insertions, 25 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 194e46dcf08d..d180caf2d6de 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -49,8 +49,6 @@ exception_marker: | |||
49 | .section ".text" | 49 | .section ".text" |
50 | .align 7 | 50 | .align 7 |
51 | 51 | ||
52 | #undef SHOW_SYSCALLS | ||
53 | |||
54 | .globl system_call_common | 52 | .globl system_call_common |
55 | system_call_common: | 53 | system_call_common: |
56 | andi. r10,r12,MSR_PR | 54 | andi. r10,r12,MSR_PR |
@@ -142,16 +140,9 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) | |||
142 | li r10,1 | 140 | li r10,1 |
143 | std r10,SOFTE(r1) | 141 | std r10,SOFTE(r1) |
144 | 142 | ||
145 | #ifdef SHOW_SYSCALLS | ||
146 | bl do_show_syscall | ||
147 | REST_GPR(0,r1) | ||
148 | REST_4GPRS(3,r1) | ||
149 | REST_2GPRS(7,r1) | ||
150 | addi r9,r1,STACK_FRAME_OVERHEAD | ||
151 | #endif | ||
152 | CURRENT_THREAD_INFO(r11, r1) | 143 | CURRENT_THREAD_INFO(r11, r1) |
153 | ld r10,TI_FLAGS(r11) | 144 | ld r10,TI_FLAGS(r11) |
154 | andi. r11,r10,_TIF_SYSCALL_T_OR_A | 145 | andi. r11,r10,_TIF_SYSCALL_DOTRACE |
155 | bne syscall_dotrace | 146 | bne syscall_dotrace |
156 | .Lsyscall_dotrace_cont: | 147 | .Lsyscall_dotrace_cont: |
157 | cmpldi 0,r0,NR_syscalls | 148 | cmpldi 0,r0,NR_syscalls |
@@ -178,12 +169,8 @@ system_call: /* label this so stack traces look sane */ | |||
178 | mtctr r12 | 169 | mtctr r12 |
179 | bctrl /* Call handler */ | 170 | bctrl /* Call handler */ |
180 | 171 | ||
181 | syscall_exit: | 172 | .Lsyscall_exit: |
182 | std r3,RESULT(r1) | 173 | std r3,RESULT(r1) |
183 | #ifdef SHOW_SYSCALLS | ||
184 | bl do_show_syscall_exit | ||
185 | ld r3,RESULT(r1) | ||
186 | #endif | ||
187 | CURRENT_THREAD_INFO(r12, r1) | 174 | CURRENT_THREAD_INFO(r12, r1) |
188 | 175 | ||
189 | ld r8,_MSR(r1) | 176 | ld r8,_MSR(r1) |
@@ -214,7 +201,7 @@ syscall_exit: | |||
214 | 201 | ||
215 | ld r9,TI_FLAGS(r12) | 202 | ld r9,TI_FLAGS(r12) |
216 | li r11,-_LAST_ERRNO | 203 | li r11,-_LAST_ERRNO |
217 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK) | 204 | andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK) |
218 | bne- syscall_exit_work | 205 | bne- syscall_exit_work |
219 | cmpld r3,r11 | 206 | cmpld r3,r11 |
220 | ld r5,_CCR(r1) | 207 | ld r5,_CCR(r1) |
@@ -270,7 +257,7 @@ syscall_dotrace: | |||
270 | 257 | ||
271 | syscall_enosys: | 258 | syscall_enosys: |
272 | li r3,-ENOSYS | 259 | li r3,-ENOSYS |
273 | b syscall_exit | 260 | b .Lsyscall_exit |
274 | 261 | ||
275 | syscall_exit_work: | 262 | syscall_exit_work: |
276 | #ifdef CONFIG_PPC_BOOK3S | 263 | #ifdef CONFIG_PPC_BOOK3S |
@@ -307,7 +294,7 @@ syscall_exit_work: | |||
307 | 294 | ||
308 | 4: /* Anything else left to do? */ | 295 | 4: /* Anything else left to do? */ |
309 | SET_DEFAULT_THREAD_PPR(r3, r10) /* Set thread.ppr = 3 */ | 296 | SET_DEFAULT_THREAD_PPR(r3, r10) /* Set thread.ppr = 3 */ |
310 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP) | 297 | andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP) |
311 | beq ret_from_except_lite | 298 | beq ret_from_except_lite |
312 | 299 | ||
313 | /* Re-enable interrupts */ | 300 | /* Re-enable interrupts */ |
@@ -347,33 +334,33 @@ _GLOBAL(save_nvgprs) | |||
347 | _GLOBAL(ppc_fork) | 334 | _GLOBAL(ppc_fork) |
348 | bl save_nvgprs | 335 | bl save_nvgprs |
349 | bl sys_fork | 336 | bl sys_fork |
350 | b syscall_exit | 337 | b .Lsyscall_exit |
351 | 338 | ||
352 | _GLOBAL(ppc_vfork) | 339 | _GLOBAL(ppc_vfork) |
353 | bl save_nvgprs | 340 | bl save_nvgprs |
354 | bl sys_vfork | 341 | bl sys_vfork |
355 | b syscall_exit | 342 | b .Lsyscall_exit |
356 | 343 | ||
357 | _GLOBAL(ppc_clone) | 344 | _GLOBAL(ppc_clone) |
358 | bl save_nvgprs | 345 | bl save_nvgprs |
359 | bl sys_clone | 346 | bl sys_clone |
360 | b syscall_exit | 347 | b .Lsyscall_exit |
361 | 348 | ||
362 | _GLOBAL(ppc32_swapcontext) | 349 | _GLOBAL(ppc32_swapcontext) |
363 | bl save_nvgprs | 350 | bl save_nvgprs |
364 | bl compat_sys_swapcontext | 351 | bl compat_sys_swapcontext |
365 | b syscall_exit | 352 | b .Lsyscall_exit |
366 | 353 | ||
367 | _GLOBAL(ppc64_swapcontext) | 354 | _GLOBAL(ppc64_swapcontext) |
368 | bl save_nvgprs | 355 | bl save_nvgprs |
369 | bl sys_swapcontext | 356 | bl sys_swapcontext |
370 | b syscall_exit | 357 | b .Lsyscall_exit |
371 | 358 | ||
372 | _GLOBAL(ret_from_fork) | 359 | _GLOBAL(ret_from_fork) |
373 | bl schedule_tail | 360 | bl schedule_tail |
374 | REST_NVGPRS(r1) | 361 | REST_NVGPRS(r1) |
375 | li r3,0 | 362 | li r3,0 |
376 | b syscall_exit | 363 | b .Lsyscall_exit |
377 | 364 | ||
378 | _GLOBAL(ret_from_kernel_thread) | 365 | _GLOBAL(ret_from_kernel_thread) |
379 | bl schedule_tail | 366 | bl schedule_tail |
@@ -385,7 +372,7 @@ _GLOBAL(ret_from_kernel_thread) | |||
385 | #endif | 372 | #endif |
386 | blrl | 373 | blrl |
387 | li r3,0 | 374 | li r3,0 |
388 | b syscall_exit | 375 | b .Lsyscall_exit |
389 | 376 | ||
390 | /* | 377 | /* |
391 | * This routine switches between two different tasks. The process | 378 | * This routine switches between two different tasks. The process |