xref: /openbsd-src/sys/arch/powerpc/include/elf.h (revision dfc50e6f40a35704a776db8742330ef4df9f19e0)
1*dfc50e6fSjca /*	$OpenBSD: elf.h,v 1.2 2024/07/21 16:46:57 jca Exp $	*/
2ef873df0Sjca 
3ef873df0Sjca /*
4ef873df0Sjca  * This file is in the public domain.
5ef873df0Sjca  */
6ef873df0Sjca 
7ef873df0Sjca #ifndef	_MACHINE_ELF_H_
8ef873df0Sjca #define	_MACHINE_ELF_H_
9ef873df0Sjca 
10ef873df0Sjca /*
11*dfc50e6fSjca  * CPU Feature Attributes
12*dfc50e6fSjca  *
13*dfc50e6fSjca  * These are defined in the PowerPC ELF ABI for the AT_HWCAP vector,
14*dfc50e6fSjca  * and are exported to userland via the elf_aux_info(3) function.
15ef873df0Sjca  */
16ef873df0Sjca 
17*dfc50e6fSjca #ifdef _KERNEL
18*dfc50e6fSjca # define __HAVE_CPU_HWCAP
19*dfc50e6fSjca # define __HAVE_CPU_HWCAP2
20*dfc50e6fSjca extern unsigned long hwcap;
21*dfc50e6fSjca extern unsigned long hwcap2;
22*dfc50e6fSjca #endif /* _KERNEL */
23*dfc50e6fSjca 
24*dfc50e6fSjca #define	PPC_FEATURE_32		0x80000000	/* Always true */
25*dfc50e6fSjca #define	PPC_FEATURE_64		0x40000000	/* Defined on a 64-bit CPU */
26*dfc50e6fSjca #define	PPC_FEATURE_601_INSTR	0x20000000
27*dfc50e6fSjca #define	PPC_FEATURE_HAS_ALTIVEC	0x10000000
28*dfc50e6fSjca #define	PPC_FEATURE_HAS_FPU	0x08000000
29*dfc50e6fSjca #define	PPC_FEATURE_HAS_MMU	0x04000000
30*dfc50e6fSjca #define	PPC_FEATURE_UNIFIED_CACHE 0x01000000
31*dfc50e6fSjca #define	PPC_FEATURE_HAS_SPE	0x00800000
32*dfc50e6fSjca #define	PPC_FEATURE_HAS_EFP_SINGLE	0x00400000
33*dfc50e6fSjca #define	PPC_FEATURE_HAS_EFP_DOUBLE	0x00200000
34*dfc50e6fSjca #define	PPC_FEATURE_NO_TB	0x00100000
35*dfc50e6fSjca #define	PPC_FEATURE_POWER4	0x00080000
36*dfc50e6fSjca #define	PPC_FEATURE_POWER5	0x00040000
37*dfc50e6fSjca #define	PPC_FEATURE_POWER5_PLUS	0x00020000
38*dfc50e6fSjca #define	PPC_FEATURE_CELL	0x00010000
39*dfc50e6fSjca #define	PPC_FEATURE_BOOKE	0x00008000
40*dfc50e6fSjca #define	PPC_FEATURE_SMT		0x00004000
41*dfc50e6fSjca #define	PPC_FEATURE_ICACHE_SNOOP	0x00002000
42*dfc50e6fSjca #define	PPC_FEATURE_ARCH_2_05	0x00001000
43*dfc50e6fSjca #define	PPC_FEATURE_HAS_DFP	0x00000400
44*dfc50e6fSjca #define	PPC_FEATURE_POWER6_EXT	0x00000200
45*dfc50e6fSjca #define	PPC_FEATURE_ARCH_2_06	0x00000100
46*dfc50e6fSjca #define	PPC_FEATURE_HAS_VSX	0x00000080
47*dfc50e6fSjca #define	PPC_FEATURE_TRUE_LE	0x00000002
48*dfc50e6fSjca #define	PPC_FEATURE_PPC_LE	0x00000001
49*dfc50e6fSjca 
50*dfc50e6fSjca #define	PPC_FEATURE2_ARCH_2_07	0x80000000
51*dfc50e6fSjca #define	PPC_FEATURE2_HTM	0x40000000
52*dfc50e6fSjca #define	PPC_FEATURE2_DSCR	0x20000000
53*dfc50e6fSjca #define	PPC_FEATURE2_EBB	0x10000000
54*dfc50e6fSjca #define	PPC_FEATURE2_ISEL	0x08000000
55*dfc50e6fSjca #define	PPC_FEATURE2_TAR	0x04000000
56*dfc50e6fSjca #define	PPC_FEATURE2_HAS_VEC_CRYPTO	0x02000000
57*dfc50e6fSjca #define	PPC_FEATURE2_HTM_NOSC	0x01000000
58*dfc50e6fSjca #define	PPC_FEATURE2_ARCH_3_00	0x00800000
59*dfc50e6fSjca #define	PPC_FEATURE2_HAS_IEEE128	0x00400000
60*dfc50e6fSjca #define	PPC_FEATURE2_DARN	0x00200000
61*dfc50e6fSjca #define	PPC_FEATURE2_SCV	0x00100000
62*dfc50e6fSjca #define	PPC_FEATURE2_HTM_NOSUSPEND	0x00080000
63*dfc50e6fSjca 
64ef873df0Sjca #endif /* !_MACHINE_ELF_H_ */
65