Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86/entry: Refactor SYS_NI macros

Pull the common code out from the SYS_NI macros into a new __SYS_NI macro.
Also conditionalize the X64 version in preparation for enabling syscall
wrappers on 32-bit native kernels.

Signed-off-by: Brian Gerst <brgerst@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Dominik Brodowski <linux@dominikbrodowski.net>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Link: https://lkml.kernel.org/r/20200313195144.164260-5-brgerst@gmail.com

authored by

Brian Gerst and committed by
Thomas Gleixner
a74d187c 6cc8d2b2

+23 -9
+23 -9
arch/x86/include/asm/syscall_wrapper.h
··· 42 42 return sys_ni_syscall(); \ 43 43 } 44 44 45 + #define __SYS_NI(abi, name) \ 46 + SYSCALL_ALIAS(__##abi##_##name, sys_ni_posix_timers) 47 + 45 48 #ifdef CONFIG_X86_64 46 49 #define __X64_SYS_STUB0(name) \ 47 50 __SYS_STUB0(x64, sys_##name) ··· 55 52 56 53 #define __X64_COND_SYSCALL(name) \ 57 54 __COND_SYSCALL(x64, sys_##name) 55 + 56 + #define __X64_SYS_NI(name) \ 57 + __SYS_NI(x64, sys_##name) 58 58 #else /* CONFIG_X86_64 */ 59 59 #define __X64_SYS_STUB0(name) 60 60 #define __X64_SYS_STUBx(x, name, ...) 61 61 #define __X64_COND_SYSCALL(name) 62 + #define __X64_SYS_NI(name) 62 63 #endif /* CONFIG_X86_64 */ 63 64 64 65 #ifdef CONFIG_IA32_EMULATION ··· 84 77 #define __IA32_COMPAT_COND_SYSCALL(name) \ 85 78 __COND_SYSCALL(ia32, compat_sys_##name) 86 79 80 + #define __IA32_COMPAT_SYS_NI(name) \ 81 + __SYS_NI(ia32, compat_sys_##name) 82 + 87 83 #define __IA32_SYS_STUB0(name) \ 88 84 __SYS_STUB0(ia32, sys_##name) 89 85 ··· 97 87 #define __IA32_COND_SYSCALL(name) \ 98 88 __COND_SYSCALL(ia32, sys_##name) 99 89 100 - #define SYS_NI(name) \ 101 - SYSCALL_ALIAS(__x64_sys_##name, sys_ni_posix_timers); \ 102 - SYSCALL_ALIAS(__ia32_sys_##name, sys_ni_posix_timers) 103 - 90 + #define __IA32_SYS_NI(name) \ 91 + __SYS_NI(ia32, sys_##name) 104 92 #else /* CONFIG_IA32_EMULATION */ 105 93 #define __IA32_COMPAT_SYS_STUB0(name) 106 94 #define __IA32_COMPAT_SYS_STUBx(x, name, ...) 107 95 #define __IA32_COMPAT_COND_SYSCALL(name) 96 + #define __IA32_COMPAT_SYS_NI(name) 108 97 #define __IA32_SYS_STUB0(name) 109 98 #define __IA32_SYS_STUBx(x, name, ...) 110 99 #define __IA32_COND_SYSCALL(name) 100 + #define __IA32_SYS_NI(name) 111 101 #endif /* CONFIG_IA32_EMULATION */ 112 102 113 103 ··· 126 116 127 117 #define __X32_COMPAT_COND_SYSCALL(name) \ 128 118 __COND_SYSCALL(x32, compat_sys_##name) 119 + 120 + #define __X32_COMPAT_SYS_NI(name) \ 121 + __SYS_NI(x32, compat_sys_##name) 129 122 #else /* CONFIG_X86_X32 */ 130 123 #define __X32_COMPAT_SYS_STUB0(name) 131 124 #define __X32_COMPAT_SYS_STUBx(x, name, ...) 132 125 #define __X32_COMPAT_COND_SYSCALL(name) 126 + #define __X32_COMPAT_SYS_NI(name) 133 127 #endif /* CONFIG_X86_X32 */ 134 128 135 129 ··· 172 158 __X32_COMPAT_COND_SYSCALL(name) 173 159 174 160 #define COMPAT_SYS_NI(name) \ 175 - SYSCALL_ALIAS(__ia32_compat_sys_##name, sys_ni_posix_timers); \ 176 - SYSCALL_ALIAS(__x32_compat_sys_##name, sys_ni_posix_timers) 161 + __IA32_COMPAT_SYS_NI(name) \ 162 + __X32_COMPAT_SYS_NI(name) 177 163 178 164 #endif /* CONFIG_COMPAT */ 179 165 ··· 245 231 __X64_COND_SYSCALL(name) \ 246 232 __IA32_COND_SYSCALL(name) 247 233 248 - #ifndef SYS_NI 249 - #define SYS_NI(name) SYSCALL_ALIAS(__x64_sys_##name, sys_ni_posix_timers); 250 - #endif 234 + #define SYS_NI(name) \ 235 + __X64_SYS_NI(name) \ 236 + __IA32_SYS_NI(name) 251 237 252 238 253 239 /*