mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 22:51:35 +00:00
powerpc/vdso: Rename syscall_map_32/64 to simplify vdso_setup_syscall_map()
Today vdso_data structure has: - syscall_map_32[] and syscall_map_64[] on PPC64 - syscall_map_32[] on PPC32 On PPC32, syscall_map_32[] is populated using sys_call_table[]. On PPC64, syscall_map_64[] is populated using sys_call_table[] and syscal_map_32[] is populated using compat_sys_call_table[]. To simplify vdso_setup_syscall_map(), - On PPC32 rename syscall_map_32[] into syscall_map[], - On PPC64 rename syscall_map_64[] into syscall_map[], - On PPC64 rename syscall_map_32[] into compat_syscall_map[]. That way, syscall_map[] gets populated using sys_call_table[] and compat_syscall_map[] gets population using compat_sys_call_table[]. Also define an empty compat_syscall_map[] on PPC32 to avoid ifdefs. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/472734be0d9991eee320a06824219a5b2663736b.1601197618.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
bc9d5bfc4d
commit
1bb30b7a45
@ -79,8 +79,8 @@ struct vdso_arch_data {
|
||||
__u32 icache_block_size; /* L1 i-cache block size */
|
||||
__u32 dcache_log_block_size; /* L1 d-cache log block size */
|
||||
__u32 icache_log_block_size; /* L1 i-cache log block size */
|
||||
__u32 syscall_map_64[SYSCALL_MAP_SIZE]; /* map of syscalls */
|
||||
__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
|
||||
__u32 syscall_map[SYSCALL_MAP_SIZE]; /* Map of syscalls */
|
||||
__u32 compat_syscall_map[SYSCALL_MAP_SIZE]; /* Map of compat syscalls */
|
||||
|
||||
struct vdso_data data[CS_BASES];
|
||||
};
|
||||
@ -92,7 +92,8 @@ struct vdso_arch_data {
|
||||
*/
|
||||
struct vdso_arch_data {
|
||||
__u64 tb_ticks_per_sec; /* Timebase tics / sec 0x38 */
|
||||
__u32 syscall_map_32[SYSCALL_MAP_SIZE]; /* map of syscalls */
|
||||
__u32 syscall_map[SYSCALL_MAP_SIZE]; /* Map of syscalls */
|
||||
__u32 compat_syscall_map[0]; /* No compat syscalls on PPC32 */
|
||||
struct vdso_data data[CS_BASES];
|
||||
};
|
||||
|
||||
|
@ -402,13 +402,15 @@ int main(void)
|
||||
/* datapage offsets for use by vdso */
|
||||
OFFSET(VDSO_DATA_OFFSET, vdso_arch_data, data);
|
||||
OFFSET(CFG_TB_TICKS_PER_SEC, vdso_arch_data, tb_ticks_per_sec);
|
||||
OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, syscall_map_32);
|
||||
#ifdef CONFIG_PPC64
|
||||
OFFSET(CFG_ICACHE_BLOCKSZ, vdso_arch_data, icache_block_size);
|
||||
OFFSET(CFG_DCACHE_BLOCKSZ, vdso_arch_data, dcache_block_size);
|
||||
OFFSET(CFG_ICACHE_LOGBLOCKSZ, vdso_arch_data, icache_log_block_size);
|
||||
OFFSET(CFG_DCACHE_LOGBLOCKSZ, vdso_arch_data, dcache_log_block_size);
|
||||
OFFSET(CFG_SYSCALL_MAP64, vdso_arch_data, syscall_map_64);
|
||||
OFFSET(CFG_SYSCALL_MAP64, vdso_arch_data, syscall_map);
|
||||
OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, compat_syscall_map);
|
||||
#else
|
||||
OFFSET(CFG_SYSCALL_MAP32, vdso_arch_data, syscall_map);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BUG
|
||||
|
@ -643,19 +643,11 @@ static void __init vdso_setup_syscall_map(void)
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < NR_syscalls; i++) {
|
||||
#ifdef CONFIG_PPC64
|
||||
if (sys_call_table[i] != (unsigned long)&sys_ni_syscall)
|
||||
vdso_data->syscall_map_64[i >> 5] |=
|
||||
0x80000000UL >> (i & 0x1f);
|
||||
vdso_data->syscall_map[i >> 5] |= 0x80000000UL >> (i & 0x1f);
|
||||
if (IS_ENABLED(CONFIG_COMPAT) &&
|
||||
compat_sys_call_table[i] != (unsigned long)&sys_ni_syscall)
|
||||
vdso_data->syscall_map_32[i >> 5] |=
|
||||
0x80000000UL >> (i & 0x1f);
|
||||
#else /* CONFIG_PPC64 */
|
||||
if (sys_call_table[i] != (unsigned long)&sys_ni_syscall)
|
||||
vdso_data->syscall_map_32[i >> 5] |=
|
||||
0x80000000UL >> (i & 0x1f);
|
||||
#endif /* CONFIG_PPC64 */
|
||||
vdso_data->compat_syscall_map[i >> 5] |= 0x80000000UL >> (i & 0x1f);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user