xref: /openbsd-src/sys/arch/hppa/include/exec.h (revision 91f110e064cd7c194e59e019b83bb7496c1c84d4)
1 /*	$OpenBSD: exec.h,v 1.12 2013/02/09 19:20:39 miod Exp $	*/
2 
3 /*
4  * Copyright (c) 1994, The University of Utah and
5  * the Computer Systems Laboratory at the University of Utah (CSL).
6  * All rights reserved.
7  *
8  * Permission to use, copy, modify and distribute this software is hereby
9  * granted provided that (1) source code retains these copyright, permission,
10  * and disclaimer notices, and (2) redistributions including binaries
11  * reproduce the notices in supporting documentation, and (3) all advertising
12  * materials mentioning features or use of this software display the following
13  * acknowledgement: ``This product includes software developed by the
14  * Computer Systems Laboratory at the University of Utah.''
15  *
16  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
17  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
18  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
19  *
20  * CSL requests users of this software to return to csl-dist@cs.utah.edu any
21  * improvements that they make and grant CSL redistribution rights.
22  *
23  * 	Utah $Hdr: exec.h 1.3 94/12/16$
24  */
25 
26 #ifndef	_MACHINE_EXEC_H_
27 #define	_MACHINE_EXEC_H_
28 
29 /* Size of a page in an object file. */
30 #define	__LDPGSZ	4096
31 
32 #define ARCH_ELFSIZE		32
33 
34 #define ELF_TARG_CLASS          ELFCLASS32
35 #define ELF_TARG_DATA           ELFDATA2MSB
36 #define ELF_TARG_MACH           EM_PARISC
37 
38 #define _NLIST_DO_ELF
39 #define	_KERN_DO_ELF
40 
41 /*
42  * the following MD ELF values definitions are from the:
43  * "Processor-Specific ELF Supplement for PA-RISC.
44  *  Including HP and HP-UX Extensions. Version 1.43. October 6, 1997"
45  *	http://devrsrc1.external.hp.com/STK/partner/elf-pa.pdf
46  *
47  */
48 
49 /* parisc-specific elf flags */
50 #define	EF_PARISC_TRAPNIL	0x00010000	/* trap on NULL derefs */
51 #define	EF_PARISC_EXT		0x00020000	/* program uses arch exts */
52 #define	EF_PARISC_LSB		0x00040000	/* program expects LSB mode */
53 #define	EF_PARISC_WIDE		0x00080000	/* program expects wide mode */
54 #define	EF_PARISC_NO_KABP	0x00100000	/* don't allow kernel assisted
55 						   branch prediction */
56 #define	EF_PARISC_LAZYSWAP	0x00200000	/* allow lazy swap allocation
57 						   for dynamically allocated
58 						   program segments */
59 #define	EF_PARISC_ARCH		0x0000ffff	/* architecture version */
60 #define		EFA_PARISC_1_0	0x020B
61 #define		EFA_PARISC_1_1	0x0210
62 #define		EFA_PARISC_2_0	0x0214
63 
64 /* legend: 0 - pa7000, 1 - pa7100, 2 - pa7200, 3 - pa7100LC, 4 - pa8000 */
65 #define	PARISC_AE_QWSI	0x00000001	/* 0  : enable quadword stores */
66 #define	PARISC_AE_FPLSU	0x00000002	/*   1: fp load/store to I/O space */
67 #define	PARISC_AE_RSQRT	0x00000004	/* 0  : reciprocal sqrt */
68 #define	PARISC_AE_FDCG	0x00000008	/* 0,1: fdc includes graph flushes */
69 #define	PARISC_AE_HPAR	0x00000010	/* 3,4: half-word add/sub/av */
70 #define	PARISC_AE_BSW	0x00000020	/* 3,4: half-word shift-add */
71 #define	PARISC_AE_HPSA	0x00000040	/* 3  : byte-swapping stores */
72 #define	PARISC_AE_DPR0	0x00000080	/* 2,4: data prefetch via ld to r0 */
73 
74 #define	SHN_PARISC_ANSI_COMMON	0xff00
75 #define	SHN_PARISC_HUGE_COMMON	0xff01
76 
77 /* sh_type */
78 #define	SHT_PARISC_EXT		0x70000000	/* contains product-specific
79 						   extension bits */
80 #define	SHT_PARISC_UNWIND	0x70000001	/* contains unwind table enries
81 						   sh_info contains index of
82 						   the code section to which
83 						   unwind entries apply */
84 #define	SHT_PARISC_DOC		0x70000002	/* contains debug info for -O */
85 #define	SHT_PARISC_ANNOT	0x70000003	/* contains code annotations */
86 
87 /* sh_flags */
88 #define	SHF_PARISC_SBP	0x80000000	/* contains code compiled for
89 					   static branch prediction */
90 #define	SHF_PARISC_HUGE	0x40000000	/* should be allocated far from gp */
91 #define	SHF_PARISC_SHORT 0x20000000	/* should be allocated near from gp */
92 
93 #define	ELF_PARISC_ARCHEXT	".PARISC.archext"
94 #define	ELF_PARISC_MILLI	".PARISC.milli"
95 #define	ELF_PARISC_UNWIND	".PARISC.unwind"
96 #define	ELF_PARISC_UNWIND_INFO	".PARISC.unwind_info"
97 #define	ELF_PARISC_SDATA	".sdata"
98 #define	ELF_PARISC_NOBITS	".sbss"
99 
100 #define	STT_PARISC_MILLI	13	/* entry point of a millicode routine */
101 
102 #define	PT_PARISC_ARCHEXT	0x70000000	/* segment contains
103 						   .PARISC.archext section */
104 #define	PT_PARISC_UNWIND	0x70000001	/* segment contains
105 						   .unwind section */
106 
107 #define	PF_PARISC_SBP		0x08000000	/* segment contains code
108 					compiled for static branch prediction */
109 
110 #endif	/* _MACHINE_EXEC_H_ */
111