xref: /aosp_15_r20/external/linux-kselftest/tools/testing/selftests/x86/helpers.h (revision 053f45be4e351dfd5e965df293cd45b779f579ee)
1*053f45beSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-only
2*053f45beSAndroid Build Coastguard Worker #ifndef __SELFTESTS_X86_HELPERS_H
3*053f45beSAndroid Build Coastguard Worker #define __SELFTESTS_X86_HELPERS_H
4*053f45beSAndroid Build Coastguard Worker 
5*053f45beSAndroid Build Coastguard Worker #include <asm/processor-flags.h>
6*053f45beSAndroid Build Coastguard Worker 
get_eflags(void)7*053f45beSAndroid Build Coastguard Worker static inline unsigned long get_eflags(void)
8*053f45beSAndroid Build Coastguard Worker {
9*053f45beSAndroid Build Coastguard Worker #ifdef __x86_64__
10*053f45beSAndroid Build Coastguard Worker 	return __builtin_ia32_readeflags_u64();
11*053f45beSAndroid Build Coastguard Worker #else
12*053f45beSAndroid Build Coastguard Worker 	return __builtin_ia32_readeflags_u32();
13*053f45beSAndroid Build Coastguard Worker #endif
14*053f45beSAndroid Build Coastguard Worker }
15*053f45beSAndroid Build Coastguard Worker 
set_eflags(unsigned long eflags)16*053f45beSAndroid Build Coastguard Worker static inline void set_eflags(unsigned long eflags)
17*053f45beSAndroid Build Coastguard Worker {
18*053f45beSAndroid Build Coastguard Worker #ifdef __x86_64__
19*053f45beSAndroid Build Coastguard Worker 	__builtin_ia32_writeeflags_u64(eflags);
20*053f45beSAndroid Build Coastguard Worker #else
21*053f45beSAndroid Build Coastguard Worker 	__builtin_ia32_writeeflags_u32(eflags);
22*053f45beSAndroid Build Coastguard Worker #endif
23*053f45beSAndroid Build Coastguard Worker }
24*053f45beSAndroid Build Coastguard Worker 
25*053f45beSAndroid Build Coastguard Worker #endif /* __SELFTESTS_X86_HELPERS_H */
26