entry.S (ff47d8c05019d6e7753cef270d6399cb5a33be57) entry.S (606aa4aa0b2c6d7c4f5d2e459922675ea1d7e459)
1/*
2 * S390 low-level entry points.
3 *
4 * Copyright IBM Corp. 1999, 2012
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
6 * Hartmut Penner (hp@de.ibm.com),
7 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
8 * Heiko Carstens <heiko.carstens@de.ibm.com>

--- 36 unchanged lines hidden (view full) ---

45STACK_SHIFT = PAGE_SHIFT + THREAD_SIZE_ORDER
46STACK_SIZE = 1 << STACK_SHIFT
47STACK_INIT = STACK_SIZE - STACK_FRAME_OVERHEAD - __PT_SIZE
48
49_TIF_WORK = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
50 _TIF_UPROBE)
51_TIF_TRACE = (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SECCOMP | \
52 _TIF_SYSCALL_TRACEPOINT)
1/*
2 * S390 low-level entry points.
3 *
4 * Copyright IBM Corp. 1999, 2012
5 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com),
6 * Hartmut Penner (hp@de.ibm.com),
7 * Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com),
8 * Heiko Carstens <heiko.carstens@de.ibm.com>

--- 36 unchanged lines hidden (view full) ---

45STACK_SHIFT = PAGE_SHIFT + THREAD_SIZE_ORDER
46STACK_SIZE = 1 << STACK_SHIFT
47STACK_INIT = STACK_SIZE - STACK_FRAME_OVERHEAD - __PT_SIZE
48
49_TIF_WORK = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
50 _TIF_UPROBE)
51_TIF_TRACE = (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SECCOMP | \
52 _TIF_SYSCALL_TRACEPOINT)
53_CIF_WORK = (_CIF_MCCK_PENDING | _CIF_ASCE | _CIF_FPU)
53_CIF_WORK = (_CIF_MCCK_PENDING | _CIF_ASCE_PRIMARY | _CIF_FPU)
54_PIF_WORK = (_PIF_PER_TRAP)
55
56#define BASED(name) name-cleanup_critical(%r13)
57
58 .macro TRACE_IRQS_ON
59#ifdef CONFIG_TRACE_IRQFLAGS
60 basr %r2,%r0
61 brasl %r14,trace_hardirqs_on_caller

--- 272 unchanged lines hidden (view full) ---

334 TSTMSK __PT_FLAGS(%r11),_PIF_PER_TRAP
335 jo .Lsysc_singlestep
336 TSTMSK __TI_flags(%r12),_TIF_SIGPENDING
337 jo .Lsysc_sigpending
338 TSTMSK __TI_flags(%r12),_TIF_NOTIFY_RESUME
339 jo .Lsysc_notify_resume
340 TSTMSK __LC_CPU_FLAGS,_CIF_FPU
341 jo .Lsysc_vxrs
54_PIF_WORK = (_PIF_PER_TRAP)
55
56#define BASED(name) name-cleanup_critical(%r13)
57
58 .macro TRACE_IRQS_ON
59#ifdef CONFIG_TRACE_IRQFLAGS
60 basr %r2,%r0
61 brasl %r14,trace_hardirqs_on_caller

--- 272 unchanged lines hidden (view full) ---

334 TSTMSK __PT_FLAGS(%r11),_PIF_PER_TRAP
335 jo .Lsysc_singlestep
336 TSTMSK __TI_flags(%r12),_TIF_SIGPENDING
337 jo .Lsysc_sigpending
338 TSTMSK __TI_flags(%r12),_TIF_NOTIFY_RESUME
339 jo .Lsysc_notify_resume
340 TSTMSK __LC_CPU_FLAGS,_CIF_FPU
341 jo .Lsysc_vxrs
342 TSTMSK __LC_CPU_FLAGS,_CIF_ASCE
343 jo .Lsysc_uaccess
342 TSTMSK __LC_CPU_FLAGS,_CIF_ASCE_PRIMARY
343 jo .Lsysc_asce_primary
344 j .Lsysc_return # beware of critical section cleanup
345
346#
347# _TIF_NEED_RESCHED is set, call schedule
348#
349.Lsysc_reschedule:
350 larl %r14,.Lsysc_return
351 jg schedule
352
353#
354# _CIF_MCCK_PENDING is set, call handler
355#
356.Lsysc_mcck_pending:
357 larl %r14,.Lsysc_return
358 jg s390_handle_mcck # TIF bit will be cleared by handler
359
360#
344 j .Lsysc_return # beware of critical section cleanup
345
346#
347# _TIF_NEED_RESCHED is set, call schedule
348#
349.Lsysc_reschedule:
350 larl %r14,.Lsysc_return
351 jg schedule
352
353#
354# _CIF_MCCK_PENDING is set, call handler
355#
356.Lsysc_mcck_pending:
357 larl %r14,.Lsysc_return
358 jg s390_handle_mcck # TIF bit will be cleared by handler
359
360#
361# _CIF_ASCE is set, load user space asce
361# _CIF_ASCE_PRIMARY is set, load user space asce
362#
362#
363.Lsysc_uaccess:
364 ni __LC_CPU_FLAGS+7,255-_CIF_ASCE
363.Lsysc_asce_primary:
364 ni __LC_CPU_FLAGS+7,255-_CIF_ASCE_PRIMARY
365 lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
366 j .Lsysc_return
367
368#
369# CIF_FPU is set, restore floating-point controls and floating-point registers.
370#
371.Lsysc_vxrs:
372 larl %r14,.Lsysc_return

--- 283 unchanged lines hidden (view full) ---

656 TSTMSK __TI_flags(%r12),_TIF_NEED_RESCHED
657 jo .Lio_reschedule
658 TSTMSK __TI_flags(%r12),_TIF_SIGPENDING
659 jo .Lio_sigpending
660 TSTMSK __TI_flags(%r12),_TIF_NOTIFY_RESUME
661 jo .Lio_notify_resume
662 TSTMSK __LC_CPU_FLAGS,_CIF_FPU
663 jo .Lio_vxrs
365 lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
366 j .Lsysc_return
367
368#
369# CIF_FPU is set, restore floating-point controls and floating-point registers.
370#
371.Lsysc_vxrs:
372 larl %r14,.Lsysc_return

--- 283 unchanged lines hidden (view full) ---

656 TSTMSK __TI_flags(%r12),_TIF_NEED_RESCHED
657 jo .Lio_reschedule
658 TSTMSK __TI_flags(%r12),_TIF_SIGPENDING
659 jo .Lio_sigpending
660 TSTMSK __TI_flags(%r12),_TIF_NOTIFY_RESUME
661 jo .Lio_notify_resume
662 TSTMSK __LC_CPU_FLAGS,_CIF_FPU
663 jo .Lio_vxrs
664 TSTMSK __LC_CPU_FLAGS,_CIF_ASCE
665 jo .Lio_uaccess
664 TSTMSK __LC_CPU_FLAGS,_CIF_ASCE_PRIMARY
665 jo .Lio_asce_primary
666 j .Lio_return # beware of critical section cleanup
667
668#
669# _CIF_MCCK_PENDING is set, call handler
670#
671.Lio_mcck_pending:
672 # TRACE_IRQS_ON already done at .Lio_return
673 brasl %r14,s390_handle_mcck # TIF bit will be cleared by handler
674 TRACE_IRQS_OFF
675 j .Lio_return
676
677#
666 j .Lio_return # beware of critical section cleanup
667
668#
669# _CIF_MCCK_PENDING is set, call handler
670#
671.Lio_mcck_pending:
672 # TRACE_IRQS_ON already done at .Lio_return
673 brasl %r14,s390_handle_mcck # TIF bit will be cleared by handler
674 TRACE_IRQS_OFF
675 j .Lio_return
676
677#
678# _CIF_ASCE is set, load user space asce
678# _CIF_ASCE_PRIMARY is set, load user space asce
679#
679#
680.Lio_uaccess:
681 ni __LC_CPU_FLAGS+7,255-_CIF_ASCE
680.Lio_asce_primary:
681 ni __LC_CPU_FLAGS+7,255-_CIF_ASCE_PRIMARY
682 lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
683 j .Lio_return
684
685#
686# CIF_FPU is set, restore floating-point controls and floating-point registers.
687#
688.Lio_vxrs:
689 larl %r14,.Lio_return

--- 547 unchanged lines hidden ---
682 lctlg %c1,%c1,__LC_USER_ASCE # load primary asce
683 j .Lio_return
684
685#
686# CIF_FPU is set, restore floating-point controls and floating-point registers.
687#
688.Lio_vxrs:
689 larl %r14,.Lio_return

--- 547 unchanged lines hidden ---