diff options
Diffstat (limited to 'arch/powerpc/kernel/entry_64.S')
-rw-r--r-- | arch/powerpc/kernel/entry_64.S | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S index 662c6dd98072..b629198b072c 100644 --- a/arch/powerpc/kernel/entry_64.S +++ b/arch/powerpc/kernel/entry_64.S | |||
@@ -106,7 +106,7 @@ BEGIN_FW_FTR_SECTION | |||
106 | LDX_BE r10,0,r10 /* get log write index */ | 106 | LDX_BE r10,0,r10 /* get log write index */ |
107 | cmpd cr1,r11,r10 | 107 | cmpd cr1,r11,r10 |
108 | beq+ cr1,33f | 108 | beq+ cr1,33f |
109 | bl .accumulate_stolen_time | 109 | bl accumulate_stolen_time |
110 | REST_GPR(0,r1) | 110 | REST_GPR(0,r1) |
111 | REST_4GPRS(3,r1) | 111 | REST_4GPRS(3,r1) |
112 | REST_2GPRS(7,r1) | 112 | REST_2GPRS(7,r1) |
@@ -143,7 +143,7 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR) | |||
143 | std r10,SOFTE(r1) | 143 | std r10,SOFTE(r1) |
144 | 144 | ||
145 | #ifdef SHOW_SYSCALLS | 145 | #ifdef SHOW_SYSCALLS |
146 | bl .do_show_syscall | 146 | bl do_show_syscall |
147 | REST_GPR(0,r1) | 147 | REST_GPR(0,r1) |
148 | REST_4GPRS(3,r1) | 148 | REST_4GPRS(3,r1) |
149 | REST_2GPRS(7,r1) | 149 | REST_2GPRS(7,r1) |
@@ -181,7 +181,7 @@ system_call: /* label this so stack traces look sane */ | |||
181 | syscall_exit: | 181 | syscall_exit: |
182 | std r3,RESULT(r1) | 182 | std r3,RESULT(r1) |
183 | #ifdef SHOW_SYSCALLS | 183 | #ifdef SHOW_SYSCALLS |
184 | bl .do_show_syscall_exit | 184 | bl do_show_syscall_exit |
185 | ld r3,RESULT(r1) | 185 | ld r3,RESULT(r1) |
186 | #endif | 186 | #endif |
187 | CURRENT_THREAD_INFO(r12, r1) | 187 | CURRENT_THREAD_INFO(r12, r1) |
@@ -248,9 +248,9 @@ syscall_error: | |||
248 | 248 | ||
249 | /* Traced system call support */ | 249 | /* Traced system call support */ |
250 | syscall_dotrace: | 250 | syscall_dotrace: |
251 | bl .save_nvgprs | 251 | bl save_nvgprs |
252 | addi r3,r1,STACK_FRAME_OVERHEAD | 252 | addi r3,r1,STACK_FRAME_OVERHEAD |
253 | bl .do_syscall_trace_enter | 253 | bl do_syscall_trace_enter |
254 | /* | 254 | /* |
255 | * Restore argument registers possibly just changed. | 255 | * Restore argument registers possibly just changed. |
256 | * We use the return value of do_syscall_trace_enter | 256 | * We use the return value of do_syscall_trace_enter |
@@ -308,7 +308,7 @@ syscall_exit_work: | |||
308 | 4: /* Anything else left to do? */ | 308 | 4: /* Anything else left to do? */ |
309 | SET_DEFAULT_THREAD_PPR(r3, r10) /* Set thread.ppr = 3 */ | 309 | SET_DEFAULT_THREAD_PPR(r3, r10) /* Set thread.ppr = 3 */ |
310 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP) | 310 | andi. r0,r9,(_TIF_SYSCALL_T_OR_A|_TIF_SINGLESTEP) |
311 | beq .ret_from_except_lite | 311 | beq ret_from_except_lite |
312 | 312 | ||
313 | /* Re-enable interrupts */ | 313 | /* Re-enable interrupts */ |
314 | #ifdef CONFIG_PPC_BOOK3E | 314 | #ifdef CONFIG_PPC_BOOK3E |
@@ -319,10 +319,10 @@ syscall_exit_work: | |||
319 | mtmsrd r10,1 | 319 | mtmsrd r10,1 |
320 | #endif /* CONFIG_PPC_BOOK3E */ | 320 | #endif /* CONFIG_PPC_BOOK3E */ |
321 | 321 | ||
322 | bl .save_nvgprs | 322 | bl save_nvgprs |
323 | addi r3,r1,STACK_FRAME_OVERHEAD | 323 | addi r3,r1,STACK_FRAME_OVERHEAD |
324 | bl .do_syscall_trace_leave | 324 | bl do_syscall_trace_leave |
325 | b .ret_from_except | 325 | b ret_from_except |
326 | 326 | ||
327 | /* Save non-volatile GPRs, if not already saved. */ | 327 | /* Save non-volatile GPRs, if not already saved. */ |
328 | _GLOBAL(save_nvgprs) | 328 | _GLOBAL(save_nvgprs) |
@@ -345,38 +345,38 @@ _GLOBAL(save_nvgprs) | |||
345 | */ | 345 | */ |
346 | 346 | ||
347 | _GLOBAL(ppc_fork) | 347 | _GLOBAL(ppc_fork) |
348 | bl .save_nvgprs | 348 | bl save_nvgprs |
349 | bl .sys_fork | 349 | bl sys_fork |
350 | b syscall_exit | 350 | b syscall_exit |
351 | 351 | ||
352 | _GLOBAL(ppc_vfork) | 352 | _GLOBAL(ppc_vfork) |
353 | bl .save_nvgprs | 353 | bl save_nvgprs |
354 | bl .sys_vfork | 354 | bl sys_vfork |
355 | b syscall_exit | 355 | b syscall_exit |
356 | 356 | ||
357 | _GLOBAL(ppc_clone) | 357 | _GLOBAL(ppc_clone) |
358 | bl .save_nvgprs | 358 | bl save_nvgprs |
359 | bl .sys_clone | 359 | bl sys_clone |
360 | b syscall_exit | 360 | b syscall_exit |
361 | 361 | ||
362 | _GLOBAL(ppc32_swapcontext) | 362 | _GLOBAL(ppc32_swapcontext) |
363 | bl .save_nvgprs | 363 | bl save_nvgprs |
364 | bl .compat_sys_swapcontext | 364 | bl compat_sys_swapcontext |
365 | b syscall_exit | 365 | b syscall_exit |
366 | 366 | ||
367 | _GLOBAL(ppc64_swapcontext) | 367 | _GLOBAL(ppc64_swapcontext) |
368 | bl .save_nvgprs | 368 | bl save_nvgprs |
369 | bl .sys_swapcontext | 369 | bl sys_swapcontext |
370 | b syscall_exit | 370 | b syscall_exit |
371 | 371 | ||
372 | _GLOBAL(ret_from_fork) | 372 | _GLOBAL(ret_from_fork) |
373 | bl .schedule_tail | 373 | bl schedule_tail |
374 | REST_NVGPRS(r1) | 374 | REST_NVGPRS(r1) |
375 | li r3,0 | 375 | li r3,0 |
376 | b syscall_exit | 376 | b syscall_exit |
377 | 377 | ||
378 | _GLOBAL(ret_from_kernel_thread) | 378 | _GLOBAL(ret_from_kernel_thread) |
379 | bl .schedule_tail | 379 | bl schedule_tail |
380 | REST_NVGPRS(r1) | 380 | REST_NVGPRS(r1) |
381 | ld r14, 0(r14) | 381 | ld r14, 0(r14) |
382 | mtlr r14 | 382 | mtlr r14 |
@@ -611,7 +611,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_DSCR) | |||
611 | _GLOBAL(ret_from_except) | 611 | _GLOBAL(ret_from_except) |
612 | ld r11,_TRAP(r1) | 612 | ld r11,_TRAP(r1) |
613 | andi. r0,r11,1 | 613 | andi. r0,r11,1 |
614 | bne .ret_from_except_lite | 614 | bne ret_from_except_lite |
615 | REST_NVGPRS(r1) | 615 | REST_NVGPRS(r1) |
616 | 616 | ||
617 | _GLOBAL(ret_from_except_lite) | 617 | _GLOBAL(ret_from_except_lite) |
@@ -661,23 +661,23 @@ _GLOBAL(ret_from_except_lite) | |||
661 | #endif | 661 | #endif |
662 | 1: andi. r0,r4,_TIF_NEED_RESCHED | 662 | 1: andi. r0,r4,_TIF_NEED_RESCHED |
663 | beq 2f | 663 | beq 2f |
664 | bl .restore_interrupts | 664 | bl restore_interrupts |
665 | SCHEDULE_USER | 665 | SCHEDULE_USER |
666 | b .ret_from_except_lite | 666 | b ret_from_except_lite |
667 | 2: | 667 | 2: |
668 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM | 668 | #ifdef CONFIG_PPC_TRANSACTIONAL_MEM |
669 | andi. r0,r4,_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM | 669 | andi. r0,r4,_TIF_USER_WORK_MASK & ~_TIF_RESTORE_TM |
670 | bne 3f /* only restore TM if nothing else to do */ | 670 | bne 3f /* only restore TM if nothing else to do */ |
671 | addi r3,r1,STACK_FRAME_OVERHEAD | 671 | addi r3,r1,STACK_FRAME_OVERHEAD |
672 | bl .restore_tm_state | 672 | bl restore_tm_state |
673 | b restore | 673 | b restore |
674 | 3: | 674 | 3: |
675 | #endif | 675 | #endif |
676 | bl .save_nvgprs | 676 | bl save_nvgprs |
677 | bl .restore_interrupts | 677 | bl restore_interrupts |
678 | addi r3,r1,STACK_FRAME_OVERHEAD | 678 | addi r3,r1,STACK_FRAME_OVERHEAD |
679 | bl .do_notify_resume | 679 | bl do_notify_resume |
680 | b .ret_from_except | 680 | b ret_from_except |
681 | 681 | ||
682 | resume_kernel: | 682 | resume_kernel: |
683 | /* check current_thread_info, _TIF_EMULATE_STACK_STORE */ | 683 | /* check current_thread_info, _TIF_EMULATE_STACK_STORE */ |
@@ -730,7 +730,7 @@ resume_kernel: | |||
730 | * sure we are soft-disabled first and reconcile irq state. | 730 | * sure we are soft-disabled first and reconcile irq state. |
731 | */ | 731 | */ |
732 | RECONCILE_IRQ_STATE(r3,r4) | 732 | RECONCILE_IRQ_STATE(r3,r4) |
733 | 1: bl .preempt_schedule_irq | 733 | 1: bl preempt_schedule_irq |
734 | 734 | ||
735 | /* Re-test flags and eventually loop */ | 735 | /* Re-test flags and eventually loop */ |
736 | CURRENT_THREAD_INFO(r9, r1) | 736 | CURRENT_THREAD_INFO(r9, r1) |
@@ -792,7 +792,7 @@ restore_no_replay: | |||
792 | */ | 792 | */ |
793 | do_restore: | 793 | do_restore: |
794 | #ifdef CONFIG_PPC_BOOK3E | 794 | #ifdef CONFIG_PPC_BOOK3E |
795 | b .exception_return_book3e | 795 | b exception_return_book3e |
796 | #else | 796 | #else |
797 | /* | 797 | /* |
798 | * Clear the reservation. If we know the CPU tracks the address of | 798 | * Clear the reservation. If we know the CPU tracks the address of |
@@ -907,7 +907,7 @@ restore_check_irq_replay: | |||
907 | * | 907 | * |
908 | * Still, this might be useful for things like hash_page | 908 | * Still, this might be useful for things like hash_page |
909 | */ | 909 | */ |
910 | bl .__check_irq_replay | 910 | bl __check_irq_replay |
911 | cmpwi cr0,r3,0 | 911 | cmpwi cr0,r3,0 |
912 | beq restore_no_replay | 912 | beq restore_no_replay |
913 | 913 | ||
@@ -928,13 +928,13 @@ restore_check_irq_replay: | |||
928 | cmpwi cr0,r3,0x500 | 928 | cmpwi cr0,r3,0x500 |
929 | bne 1f | 929 | bne 1f |
930 | addi r3,r1,STACK_FRAME_OVERHEAD; | 930 | addi r3,r1,STACK_FRAME_OVERHEAD; |
931 | bl .do_IRQ | 931 | bl do_IRQ |
932 | b .ret_from_except | 932 | b ret_from_except |
933 | 1: cmpwi cr0,r3,0x900 | 933 | 1: cmpwi cr0,r3,0x900 |
934 | bne 1f | 934 | bne 1f |
935 | addi r3,r1,STACK_FRAME_OVERHEAD; | 935 | addi r3,r1,STACK_FRAME_OVERHEAD; |
936 | bl .timer_interrupt | 936 | bl timer_interrupt |
937 | b .ret_from_except | 937 | b ret_from_except |
938 | #ifdef CONFIG_PPC_DOORBELL | 938 | #ifdef CONFIG_PPC_DOORBELL |
939 | 1: | 939 | 1: |
940 | #ifdef CONFIG_PPC_BOOK3E | 940 | #ifdef CONFIG_PPC_BOOK3E |
@@ -948,14 +948,14 @@ restore_check_irq_replay: | |||
948 | #endif /* CONFIG_PPC_BOOK3E */ | 948 | #endif /* CONFIG_PPC_BOOK3E */ |
949 | bne 1f | 949 | bne 1f |
950 | addi r3,r1,STACK_FRAME_OVERHEAD; | 950 | addi r3,r1,STACK_FRAME_OVERHEAD; |
951 | bl .doorbell_exception | 951 | bl doorbell_exception |
952 | b .ret_from_except | 952 | b ret_from_except |
953 | #endif /* CONFIG_PPC_DOORBELL */ | 953 | #endif /* CONFIG_PPC_DOORBELL */ |
954 | 1: b .ret_from_except /* What else to do here ? */ | 954 | 1: b ret_from_except /* What else to do here ? */ |
955 | 955 | ||
956 | unrecov_restore: | 956 | unrecov_restore: |
957 | addi r3,r1,STACK_FRAME_OVERHEAD | 957 | addi r3,r1,STACK_FRAME_OVERHEAD |
958 | bl .unrecoverable_exception | 958 | bl unrecoverable_exception |
959 | b unrecov_restore | 959 | b unrecov_restore |
960 | 960 | ||
961 | #ifdef CONFIG_PPC_RTAS | 961 | #ifdef CONFIG_PPC_RTAS |
@@ -1238,7 +1238,7 @@ _GLOBAL(ftrace_graph_caller) | |||
1238 | ld r11, 112(r1) | 1238 | ld r11, 112(r1) |
1239 | addi r3, r11, 16 | 1239 | addi r3, r11, 16 |
1240 | 1240 | ||
1241 | bl .prepare_ftrace_return | 1241 | bl prepare_ftrace_return |
1242 | nop | 1242 | nop |
1243 | 1243 | ||
1244 | ld r0, 128(r1) | 1244 | ld r0, 128(r1) |
@@ -1254,7 +1254,7 @@ _GLOBAL(return_to_handler) | |||
1254 | mr r31, r1 | 1254 | mr r31, r1 |
1255 | stdu r1, -112(r1) | 1255 | stdu r1, -112(r1) |
1256 | 1256 | ||
1257 | bl .ftrace_return_to_handler | 1257 | bl ftrace_return_to_handler |
1258 | nop | 1258 | nop |
1259 | 1259 | ||
1260 | /* return value has real return address */ | 1260 | /* return value has real return address */ |
@@ -1284,7 +1284,7 @@ _GLOBAL(mod_return_to_handler) | |||
1284 | */ | 1284 | */ |
1285 | ld r2, PACATOC(r13) | 1285 | ld r2, PACATOC(r13) |
1286 | 1286 | ||
1287 | bl .ftrace_return_to_handler | 1287 | bl ftrace_return_to_handler |
1288 | nop | 1288 | nop |
1289 | 1289 | ||
1290 | /* return value has real return address */ | 1290 | /* return value has real return address */ |