parisc: Add compile-time check when adding new syscalls
Helge Deller
maintainerPATCH 1/1 parisc: Add compile-time check when adding new syscalls
Signed-off-by Helge Deller <[email protected]>
arch/parisc/kernel/syscall_table.S +18 -0
@@ -41,20 +41,25 @@ #define ENTRY_UHOH(_name_) .dword sys32_##unimplemented #define ENTRY_OURS(_name_) .dword parisc_##_name_ #define ENTRY_COMP(_name_) .dword compat_sys_##_name_ +#define SYSCALLTABLE_NAME syscall_table_compat #elif defined(CONFIG_64BIT) && defined(SYSCALL_TABLE_64BIT) #define ENTRY_SAME(_name_) .dword sys_##_name_ #define ENTRY_DIFF(_name_) .dword sys_##_name_ #define ENTRY_UHOH(_name_) .dword sys_##_name_ #define ENTRY_OURS(_name_) .dword sys_##_name_ #define ENTRY_COMP(_name_) .dword sys_##_name_ +#define SYSCALLTABLE_NAME syscall_table_64bit #else #define ENTRY_SAME(_name_) .word sys_##_name_ #define ENTRY_DIFF(_name_) .word sys_##_name_ #define ENTRY_UHOH(_name_) .word sys_##_name_ #define ENTRY_OURS(_name_) .word parisc_##_name_ #define ENTRY_COMP(_name_) .word sys_##_name_ +#define SYSCALLTABLE_NAME syscall_table_32bit #endif + .local SYSCALLTABLE_NAME +SYSCALLTABLE_NAME: ENTRY_SAME(restart_syscall) /* 0 */ ENTRY_SAME(exit) ENTRY_SAME(fork_wrapper)
@@ -439,8 +444,21 @@ ENTRY_SAME(bpf) ENTRY_COMP(execveat) + + .size SYSCALLTABLE_NAME, . - SYSCALLTABLE_NAME + .type SYSCALLTABLE_NAME, @object + +#if defined(CONFIG_64BIT) +.ifne (. - SYSCALLTABLE_NAME) - (__NR_Linux_syscalls * 8) +#else /* !defined(CONFIG_64BIT) */ +.ifne (. - SYSCALLTABLE_NAME) - (__NR_Linux_syscalls * 4) +#endif +.error "syscall table not in sync with value of __NR_Linux_syscalls" +.endif + /* Nothing yet */ +#undef SYSCALLTABLE_NAME #undef ENTRY_SAME #undef ENTRY_DIFF #undef ENTRY_UHOH
Helge Deller
maintainerSigned-off-by Helge Deller <[email protected]>
arch/parisc/kernel/syscall_table.S +10 -0
@@ -55,6 +55,7 @@ #define ENTRY_COMP(_name_) .word sys_##_name_ #endif +99: ENTRY_SAME(restart_syscall) /* 0 */ ENTRY_SAME(exit) ENTRY_SAME(fork_wrapper)
@@ -439,6 +440,15 @@ ENTRY_SAME(bpf) ENTRY_COMP(execveat) + +#if defined(CONFIG_64BIT) +.ifne (. - 99b) - (__NR_Linux_syscalls * 8) +#else /* !defined(CONFIG_64BIT) */ +.ifne (. - 99b) - (__NR_Linux_syscalls * 4) +#endif +.error "size of syscall table does not fit value of __NR_Linux_syscalls" +.endif + /* Nothing yet */ #undef ENTRY_SAME