]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - arch/s390/kernel/entry.S
s390/uaccess: simplify control register updates
[mirror_ubuntu-bionic-kernel.git] / arch / s390 / kernel / entry.S
index 526d3735ed29050d317ef1327039397a4594d71f..7006bfdf5c5297f630c6b5bcc333655e221f95af 100644 (file)
@@ -38,12 +38,12 @@ __PT_R14     =      __PT_GPRS + 56
 __PT_R15     = __PT_GPRS + 60
 
 _TIF_WORK_SVC = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
-                _TIF_MCCK_PENDING | _TIF_PER_TRAP )
+                _TIF_MCCK_PENDING | _TIF_PER_TRAP | _TIF_ASCE)
 _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | \
-                _TIF_MCCK_PENDING)
+                _TIF_MCCK_PENDING | _TIF_ASCE)
 _TIF_TRACE    = (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | _TIF_SECCOMP | \
                 _TIF_SYSCALL_TRACEPOINT)
-_TIF_TRANSFER = (_TIF_MCCK_PENDING | _TIF_TLB_WAIT)
+_TIF_TRANSFER = (_TIF_MCCK_PENDING | _TIF_ASCE)
 
 STACK_SHIFT = PAGE_SHIFT + THREAD_ORDER
 STACK_SIZE  = 1 << STACK_SHIFT
@@ -241,6 +241,8 @@ sysc_work:
        jo      sysc_sigpending
        tm      __TI_flags+3(%r12),_TIF_NOTIFY_RESUME
        jo      sysc_notify_resume
+       tm      __TI_flags+3(%r12),_TIF_ASCE
+       jo      sysc_uaccess
        j       sysc_return             # beware of critical section cleanup
 
 #
@@ -259,6 +261,14 @@ sysc_mcck_pending:
        la      %r14,BASED(sysc_return)
        br      %r1                     # TIF bit will be cleared by handler
 
+#
+# _TIF_ASCE is set, load user space asce
+#
+sysc_uaccess:
+       ni      __TI_flags+3(%r12),255-_TIF_ASCE
+       lctl    %c1,%c1,__LC_USER_ASCE  # load primary asce
+       j       sysc_return
+
 #
 # _TIF_SIGPENDING is set, call do_signal
 #
@@ -522,6 +532,8 @@ io_work_tif:
        jo      io_sigpending
        tm      __TI_flags+3(%r12),_TIF_NOTIFY_RESUME
        jo      io_notify_resume
+       tm      __TI_flags+3(%r12),_TIF_ASCE
+       jo      io_uaccess
        j       io_return               # beware of critical section cleanup
 
 #
@@ -534,6 +546,14 @@ io_mcck_pending:
        TRACE_IRQS_OFF
        j       io_return
 
+#
+# _TIF_ASCE is set, load user space asce
+#
+io_uaccess:
+       ni      __TI_flags+3(%r12),255-_TIF_ASCE
+       lctl    %c1,%c1,__LC_USER_ASCE  # load primary asce
+       j       io_return
+
 #
 # _TIF_NEED_RESCHED is set, call schedule
 #