381    i386    pkey_alloc              sys_pkey_alloc
 382    i386    pkey_free               sys_pkey_free
 383    i386    statx                   sys_statx
-384    i386    arch_prctl              sys_arch_prctl                  compat_sys_arch_prctl
+384    i386    arch_prctl              sys_arch_prctl
 385    i386    io_pgetevents           sys_io_pgetevents_time32        compat_sys_io_pgetevents
 386    i386    rseq                    sys_rseq
 393    i386    semget                  sys_semget
 
 void entry_SYSCALL_64_safe_stack(void);
 void entry_SYSRETQ_unsafe_stack(void);
 void entry_SYSRETQ_end(void);
-long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2);
 #endif
 
 #ifdef CONFIG_X86_32
 
 extern int reboot_force;
 
-long do_arch_prctl_common(int option, unsigned long arg2);
+long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2);
 
 #endif /* _ASM_X86_PROTO_H */
 
        return addr;
 }
 
-long do_arch_prctl_common(int option, unsigned long arg2)
+SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
 {
        switch (option) {
        case ARCH_GET_CPUID:
                return fpu_xstate_prctl(option, arg2);
        }
 
+       if (!in_ia32_syscall())
+               return do_arch_prctl_64(current, option, arg2);
+
        return -EINVAL;
 }
 
 
        return prev_p;
 }
-
-SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
-{
-       return do_arch_prctl_common(option, arg2);
-}
 
        return ret;
 }
 
-SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
-{
-       long ret;
-
-       ret = do_arch_prctl_64(current, option, arg2);
-       if (ret == -EINVAL)
-               ret = do_arch_prctl_common(option, arg2);
-
-       return ret;
-}
-
-#ifdef CONFIG_IA32_EMULATION
-COMPAT_SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
-{
-       return do_arch_prctl_common(option, arg2);
-}
-#endif
-
 unsigned long KSTK_ESP(struct task_struct *task)
 {
        return task_pt_regs(task)->sp;