x86: Introduce ia32_enabled()
[ upstream commit 1da5c9bc119d3a749b519596b93f9b2667e93c4a ] IA32 support on 64bit kernels depends on whether CONFIG_IA32_EMULATION is selected or not. As it is a compile time option it doesn't provide the flexibility to have distributions set their own policy for IA32 support and give the user the flexibility to override it. As a first step introduce ia32_enabled() which abstracts whether IA32 compat is turned on or off. Upcoming patches will implement the ability to set IA32 compat state at boot time. Signed-off-by: Nikolay Borisov <nik.borisov@suse.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20230623111409.3047467-2-nik.borisov@suse.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
dfa1898cef
commit
f259af26ee
|
@ -96,6 +96,10 @@ static __always_inline int syscall_32_enter(struct pt_regs *regs)
|
||||||
return (int)regs->orig_ax;
|
return (int)regs->orig_ax;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_IA32_EMULATION
|
||||||
|
bool __ia32_enabled __ro_after_init = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Invoke a 32-bit syscall. Called with IRQs on in CONTEXT_KERNEL.
|
* Invoke a 32-bit syscall. Called with IRQs on in CONTEXT_KERNEL.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -68,6 +68,20 @@ extern void ia32_pick_mmap_layout(struct mm_struct *mm);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_IA32_EMULATION */
|
extern bool __ia32_enabled;
|
||||||
|
|
||||||
|
static inline bool ia32_enabled(void)
|
||||||
|
{
|
||||||
|
return __ia32_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* !CONFIG_IA32_EMULATION */
|
||||||
|
|
||||||
|
static inline bool ia32_enabled(void)
|
||||||
|
{
|
||||||
|
return IS_ENABLED(CONFIG_X86_32);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _ASM_X86_IA32_H */
|
#endif /* _ASM_X86_IA32_H */
|
||||||
|
|
Loading…
Reference in New Issue