1222748Srwatson/* NDS32 ELF support for BFD.
2222748Srwatson   Copyright (C) 2012-2024 Free Software Foundation, Inc.
3222748Srwatson   Contributed by Andes Technology Corporation.
4222748Srwatson
5222748Srwatson   This file is part of BFD, the Binary File Descriptor library.
6222748Srwatson
7222748Srwatson   This program is free software; you can redistribute it and/or modify
8222748Srwatson   it under the terms of the GNU General Public License as published by
9222748Srwatson   the Free Software Foundation; either version 3 of the License, or
10222748Srwatson   (at your option) any later version.
11222748Srwatson
12222748Srwatson   This program is distributed in the hope that it will be useful,
13222748Srwatson   but WITHOUT ANY WARRANTY; without even the implied warranty of
14222748Srwatson   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15222748Srwatson   GNU General Public License for more details.
16222748Srwatson
17222748Srwatson   You should have received a copy of the GNU General Public License
18222748Srwatson   along with this program; if not, write to the Free Software
19222748Srwatson   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
20222748Srwatson   02110-1301, USA.  */
21222748Srwatson
22222748Srwatson#ifndef _ELF_NDS32_H
23222748Srwatson#define _ELF_NDS32_H
24222748Srwatson
25222748Srwatson#include "elf/reloc-macros.h"
26222748Srwatson
27222748SrwatsonSTART_RELOC_NUMBERS (elf_nds32_reloc_type)
28222748Srwatson  /* These used for relocations.  */
29222748Srwatson  RELOC_NUMBER (R_NDS32_NONE, 0)
30222748Srwatson  /* REL relocations.  */
31222748Srwatson  RELOC_NUMBER (R_NDS32_16, 1)
32222748Srwatson  RELOC_NUMBER (R_NDS32_32, 2)
33222748Srwatson  RELOC_NUMBER (R_NDS32_20, 3)
34222748Srwatson  RELOC_NUMBER (R_NDS32_9_PCREL, 4)
35263198Srwatson  RELOC_NUMBER (R_NDS32_15_PCREL, 5)
36222748Srwatson  RELOC_NUMBER (R_NDS32_17_PCREL, 6)
37222748Srwatson  RELOC_NUMBER (R_NDS32_25_PCREL, 7)
38222748Srwatson  RELOC_NUMBER (R_NDS32_HI20, 8)
39222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S3, 9)
40222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S2, 10)
41222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S1, 11)
42222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S0, 12)
43222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S3, 13)
44222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S2, 14)
45222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S1, 15)
46222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S0, 16)
47263198Srwatson  RELOC_NUMBER (R_NDS32_GNU_VTINHERIT, 17)
48222748Srwatson  RELOC_NUMBER (R_NDS32_GNU_VTENTRY, 18)
49222748Srwatson  /* RELA relocations.  */
50222748Srwatson  RELOC_NUMBER (R_NDS32_16_RELA, 19)
51222748Srwatson  RELOC_NUMBER (R_NDS32_32_RELA, 20)
52222748Srwatson  RELOC_NUMBER (R_NDS32_20_RELA, 21)
53222748Srwatson  RELOC_NUMBER (R_NDS32_9_PCREL_RELA, 22)
54222748Srwatson  RELOC_NUMBER (R_NDS32_15_PCREL_RELA, 23)
55222748Srwatson  RELOC_NUMBER (R_NDS32_17_PCREL_RELA, 24)
56222748Srwatson  RELOC_NUMBER (R_NDS32_25_PCREL_RELA, 25)
57222748Srwatson  RELOC_NUMBER (R_NDS32_HI20_RELA, 26)
58222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S3_RELA, 27)
59222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S2_RELA, 28)
60222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S1_RELA, 29)
61222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S0_RELA, 30)
62222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S3_RELA, 31)
63222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S2_RELA, 32)
64222748Srwatson  RELOC_NUMBER (R_NDS32_SDA15S1_RELA, 33)
65263198Srwatson  RELOC_NUMBER (R_NDS32_SDA15S0_RELA, 34)
66263198Srwatson  RELOC_NUMBER (R_NDS32_RELA_GNU_VTINHERIT, 35)
67263198Srwatson  RELOC_NUMBER (R_NDS32_RELA_GNU_VTENTRY, 36)
68263198Srwatson  /* GOT and PLT.  */
69263198Srwatson  RELOC_NUMBER (R_NDS32_GOT20, 37)
70263198Srwatson  RELOC_NUMBER (R_NDS32_25_PLTREL, 38)
71263198Srwatson  RELOC_NUMBER (R_NDS32_COPY, 39)
72222748Srwatson  RELOC_NUMBER (R_NDS32_GLOB_DAT, 40)
73222748Srwatson  RELOC_NUMBER (R_NDS32_JMP_SLOT, 41)
74222748Srwatson  RELOC_NUMBER (R_NDS32_RELATIVE, 42)
75222748Srwatson  RELOC_NUMBER (R_NDS32_GOTOFF, 43)
76222748Srwatson  RELOC_NUMBER (R_NDS32_GOTPC20, 44)
77222748Srwatson  RELOC_NUMBER (R_NDS32_GOT_HI20, 45)
78222748Srwatson  RELOC_NUMBER (R_NDS32_GOT_LO12, 46)
79222748Srwatson  RELOC_NUMBER (R_NDS32_GOTPC_HI20, 47)
80222748Srwatson  RELOC_NUMBER (R_NDS32_GOTPC_LO12, 48)
81222748Srwatson  RELOC_NUMBER (R_NDS32_GOTOFF_HI20, 49)
82222748Srwatson  RELOC_NUMBER (R_NDS32_GOTOFF_LO12, 50)
83222748Srwatson  /* 32_to_16 relaxations.  */
84263198Srwatson  RELOC_NUMBER (R_NDS32_INSN16, 51)
85263198Srwatson  /* Alignment tag.  */
86263198Srwatson  RELOC_NUMBER (R_NDS32_LABEL, 52)
87263198Srwatson  RELOC_NUMBER (R_NDS32_LONGCALL1, 53)		/* This is obsoleted.  */
88263198Srwatson  RELOC_NUMBER (R_NDS32_LONGCALL2, 54)		/* This is obsoleted.  */
89222748Srwatson  RELOC_NUMBER (R_NDS32_LONGCALL3, 55)		/* This is obsoleted.  */
90222748Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP1, 56)		/* This is obsoleted.  */
91222748Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP2, 57)		/* This is obsoleted.  */
92222748Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP3, 58)		/* This is obsoleted.  */
93222748Srwatson  RELOC_NUMBER (R_NDS32_LOADSTORE, 59)		/* This is obsoleted.  */
94222748Srwatson  RELOC_NUMBER (R_NDS32_9_FIXED_RELA, 60)
95222748Srwatson  RELOC_NUMBER (R_NDS32_15_FIXED_RELA, 61)
96222748Srwatson  RELOC_NUMBER (R_NDS32_17_FIXED_RELA, 62)
97222748Srwatson  RELOC_NUMBER (R_NDS32_25_FIXED_RELA, 63)
98222748Srwatson  RELOC_NUMBER (R_NDS32_PLTREL_HI20, 64)	/* This is obsoleted.  */
99222748Srwatson  RELOC_NUMBER (R_NDS32_PLTREL_LO12, 65)	/* This is obsoleted.  */
100222748Srwatson  RELOC_NUMBER (R_NDS32_PLT_GOTREL_HI20, 66)
101222748Srwatson  RELOC_NUMBER (R_NDS32_PLT_GOTREL_LO12, 67)
102222748Srwatson  RELOC_NUMBER (R_NDS32_SDA12S2_DP_RELA, 68)
103222748Srwatson  RELOC_NUMBER (R_NDS32_SDA12S2_SP_RELA, 69)
104222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S2_DP_RELA, 70)
105222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S2_SP_RELA, 71)
106222748Srwatson  RELOC_NUMBER (R_NDS32_LO12S0_ORI_RELA, 72)
107222748Srwatson  RELOC_NUMBER (R_NDS32_SDA16S3_RELA, 73)
108222748Srwatson  RELOC_NUMBER (R_NDS32_SDA17S2_RELA, 74)
109222748Srwatson  RELOC_NUMBER (R_NDS32_SDA18S1_RELA, 75)
110222748Srwatson  RELOC_NUMBER (R_NDS32_SDA19S0_RELA, 76)
111222748Srwatson  RELOC_NUMBER (R_NDS32_DWARF2_OP1_RELA, 77)	/* This is obsoleted.  */
112222748Srwatson  RELOC_NUMBER (R_NDS32_DWARF2_OP2_RELA, 78)	/* This is obsoleted.  */
113222748Srwatson  RELOC_NUMBER (R_NDS32_DWARF2_LEB_RELA, 79)	/* This is obsoleted.  */
114222748Srwatson  RELOC_NUMBER (R_NDS32_UPDATE_TA_RELA, 80)	/* This is obsoleted.  */
115222748Srwatson  RELOC_NUMBER (R_NDS32_9_PLTREL, 81)
116222748Srwatson  RELOC_NUMBER (R_NDS32_PLT_GOTREL_LO20, 82)
117222748Srwatson  RELOC_NUMBER (R_NDS32_PLT_GOTREL_LO15, 83)
118222748Srwatson  RELOC_NUMBER (R_NDS32_PLT_GOTREL_LO19, 84)
119222748Srwatson  RELOC_NUMBER (R_NDS32_GOT_LO15, 85)
120222748Srwatson  RELOC_NUMBER (R_NDS32_GOT_LO19, 86)
121222748Srwatson  RELOC_NUMBER (R_NDS32_GOTOFF_LO15, 87)
122222748Srwatson  RELOC_NUMBER (R_NDS32_GOTOFF_LO19, 88)
123222748Srwatson  RELOC_NUMBER (R_NDS32_GOT15S2_RELA, 89)
124222748Srwatson  RELOC_NUMBER (R_NDS32_GOT17S2_RELA, 90)
125222748Srwatson  RELOC_NUMBER (R_NDS32_5_RELA, 91)
126222748Srwatson  RELOC_NUMBER (R_NDS32_10_UPCREL_RELA, 92)	/* This is obsoleted.  */
127222748Srwatson  RELOC_NUMBER (R_NDS32_SDA_FP7U2_RELA, 93)
128222748Srwatson  RELOC_NUMBER (R_NDS32_WORD_9_PCREL_RELA, 94)
129222748Srwatson  RELOC_NUMBER (R_NDS32_25_ABS_RELA, 95)
130222748Srwatson  RELOC_NUMBER (R_NDS32_17IFC_PCREL_RELA, 96)	/* This is obsoleted.  */
131222748Srwatson  RELOC_NUMBER (R_NDS32_10IFCU_PCREL_RELA, 97)	/* This is obsoleted.  */
132222748Srwatson  /* TLS support.  */
133222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_HI20, 98)
134222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_LO12, 99)
135222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_IE_HI20, 100)
136222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_IE_LO12S2, 101)
137222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_TPOFF, 102)
138222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_20, 103)
139222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_15S0, 104)
140222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_15S1, 105)
141222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_15S2, 106)
142222748Srwatson  RELOC_NUMBER (R_NDS32_LONGCALL4, 107)
143263198Srwatson  RELOC_NUMBER (R_NDS32_LONGCALL5, 108)
144222748Srwatson  RELOC_NUMBER (R_NDS32_LONGCALL6, 109)
145263198Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP4, 110)
146263198Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP5, 111)
147263198Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP6, 112)
148263198Srwatson  RELOC_NUMBER (R_NDS32_LONGJUMP7, 113)
149263198Srwatson  /* Reserved numbers: 114.  */
150263198Srwatson  /* TLS support */
151222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_IE_LO12, 115)
152263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_IEGP_HI20, 116)
153263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_IEGP_LO12, 117)
154263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_IEGP_LO12S2, 118)
155263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC, 119)
156263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_HI20, 120)
157263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_LO12, 121)
158263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_20, 122)
159263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_SDA17S2, 123)
160222748Srwatson  /* Reserved numbers: 124-191.  */
161263198Srwatson
162222748Srwatson  /* These used only for relaxations  */
163222748Srwatson  RELOC_NUMBER (R_NDS32_RELAX_ENTRY, 192)
164222748Srwatson  RELOC_NUMBER (R_NDS32_GOT_SUFF, 193)
165222748Srwatson  RELOC_NUMBER (R_NDS32_GOTOFF_SUFF, 194)
166222748Srwatson  RELOC_NUMBER (R_NDS32_PLT_GOT_SUFF, 195)
167222748Srwatson  RELOC_NUMBER (R_NDS32_MULCALL_SUFF, 196)	/* This is obsoleted.  */
168222748Srwatson  RELOC_NUMBER (R_NDS32_PTR, 197)
169222748Srwatson  RELOC_NUMBER (R_NDS32_PTR_COUNT, 198)
170222748Srwatson  RELOC_NUMBER (R_NDS32_PTR_RESOLVED, 199)
171222748Srwatson  RELOC_NUMBER (R_NDS32_PLTBLOCK, 200)		/* This is obsoleted.  */
172222748Srwatson  RELOC_NUMBER (R_NDS32_RELAX_REGION_BEGIN, 201)
173222748Srwatson  RELOC_NUMBER (R_NDS32_RELAX_REGION_END, 202)
174222748Srwatson  RELOC_NUMBER (R_NDS32_MINUEND, 203)
175222748Srwatson  RELOC_NUMBER (R_NDS32_SUBTRAHEND, 204)
176222748Srwatson  RELOC_NUMBER (R_NDS32_DIFF8, 205)
177263198Srwatson  RELOC_NUMBER (R_NDS32_DIFF16, 206)
178263198Srwatson  RELOC_NUMBER (R_NDS32_DIFF32, 207)
179263198Srwatson  RELOC_NUMBER (R_NDS32_DIFF_ULEB128, 208)
180263198Srwatson  RELOC_NUMBER (R_NDS32_DATA, 209)
181263198Srwatson  RELOC_NUMBER (R_NDS32_TRAN, 210)
182263198Srwatson  /* TLS support */
183263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_ADD, 211)
184222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_LE_LS, 212)
185263198Srwatson  RELOC_NUMBER (R_NDS32_EMPTY, 213)
186263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_ADD, 214)
187263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_FUNC, 215)
188222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_CALL, 216)
189263198Srwatson  RELOC_NUMBER (R_NDS32_TLS_DESC_MEM, 217)
190222748Srwatson  RELOC_NUMBER (R_NDS32_RELAX_REMOVE, 218)
191222748Srwatson  RELOC_NUMBER (R_NDS32_RELAX_GROUP, 219)
192222748Srwatson  RELOC_NUMBER (R_NDS32_TLS_IEGP_LW, 220)
193222748Srwatson  RELOC_NUMBER (R_NDS32_LSI, 221)
194222748Srwatson  /* Reserved numbers: 222-255.  */
195222748Srwatson
196222748SrwatsonEND_RELOC_NUMBERS (R_NDS32_max)
197222748Srwatson
198222748Srwatson/* Processor specific section indices.  These sections do not actually
199222748Srwatson   exist.  Symbols with a st_shndx field corresponding to one of these
200222748Srwatson   values have a special meaning.  */
201222748Srwatson
202222748Srwatson/* Processor specific flags for the ELF header e_flags field.
203222748Srwatson
204222748Srwatson   31   28 27		      8 7   4 3       0
205222748Srwatson   ---------------------------------------------
206222748Srwatson   | ARCH | CONFUGURAION FIELD | ABI | ELF_VER |
207222748Srwatson   ---------------------------------------------  */
208222748Srwatson
209222748Srwatson/* Architechure definition.  */
210222748Srwatson
211222748Srwatson/* 4-bit (b31-b28) nds32 architecture field.
212222748Srwatson   We can have up to 15 architectures; 0000 is for unknown.  */
213222748Srwatson#define EF_NDS_ARCH				0xF0000000
214222748Srwatson#define EF_NDS_ARCH_SHIFT			28
215222748Srwatson/* There could be more architectures. For now, only n1 and n1h.  */
216222748Srwatson#define E_NDS_ARCH_STAR_RESERVED		0x00000000
217222748Srwatson#define E_NDS_ARCH_STAR_V1_0			0x10000000
218222748Srwatson#define E_NDS_ARCH_STAR_V2_0			0x20000000
219263198Srwatson#define E_NDS_ARCH_STAR_V3_0			0x30000000
220263198Srwatson#define E_NDS_ARCH_STAR_V3_M			0x40000000
221222748Srwatson#define E_NDS_ARCH_STAR_V0_9			0x90000000	/* Obsoleted.  */
222222748Srwatson/* n1 code.  */
223222748Srwatson#define E_N1_ARCH			E_NDS_ARCH_STAR_V0_9
224222748Srwatson/* n1h code.  */
225222748Srwatson#define E_N1H_ARCH			E_NDS_ARCH_STAR_V1_0
226263198Srwatson
227263198Srwatson
228263198Srwatson/* Configuration field definitioans.  */
229222748Srwatson#define EF_NDS_INST				0x0FFFFF00
230263198Srwatson
231222748Srwatson/* E_NDS_ARCH_STAR_V1_0 configuration fields.
232222748Srwatson
233222748Srwatson   E_NDS_ARCH_STAR_V2_0 configuration fields.
234222748Srwatson   These are discarded in v2.
235263198Srwatson     * E_NDS32_HAS_MFUSR_PC_INST	0x00000100
236263198Srwatson     * E_NDS32_HAS_DIV_INST		0x00002000
237263198Srwatson     * E_NDS32_HAS_NO_MAC_INST		0x00100000
238222748Srwatson   These are added in v2.
239222748Srwatson     * E_NDS32_HAS_DIV_DX_INST		0x00002000
240222748Srwatson     * E_NDS32_HAS_MAC_DX_INST		0x00100000  */
241222748Srwatson
242222748Srwatson/* MFUSR rt, PC and correct ISYNC, MSYNC instructions.
243263198Srwatson   Old N1213HC has no such instructions.  */
244263198Srwatson#define E_NDS32_HAS_MFUSR_PC_INST		0x00000100 /* Reclaimed.  */
245263198Srwatson/* C/C++ performance extension instructions.  */
246263198Srwatson#define E_NDS32_HAS_EXT_INST			0x00000200
247263198Srwatson/* Performance extension set II instructions.  */
248263198Srwatson#define E_NDS32_HAS_EXT2_INST			0x00000400
249263198Srwatson/* Single precision Floating point processor instructions.  */
250263198Srwatson#define E_NDS32_HAS_FPU_INST			0x00000800
251222748Srwatson/* Audio instructions with 32-bit audio dx.lo register.  */
252222748Srwatson#define E_NDS32_HAS_AUDIO_INST			0x00001000
253222748Srwatson/* DIV instructions.  */
254222748Srwatson#define E_NDS32_HAS_DIV_INST			0x00002000 /* Reclaimed.  */
255222748Srwatson/* DIV instructions using d0/d1.  */
256222748Srwatson#define E_NDS32_HAS_DIV_DX_INST			0x00002000 /* v2.  */
257222748Srwatson/* 16-bit instructions.  */
258222748Srwatson#define E_NDS32_HAS_16BIT_INST			0x00004000 /* Reclaimed.  */
259222748Srwatson/* String operation instructions.  */
260222748Srwatson#define E_NDS32_HAS_STRING_INST			0x00008000
261222748Srwatson/* Reduced register file.  */
262222748Srwatson#define E_NDS32_HAS_REDUCED_REGS		0x00010000
263222748Srwatson/* Video instructions.  */
264222748Srwatson#define E_NDS32_HAS_VIDEO_INST			0x00020000 /* Reclaimed.  */
265222748Srwatson#define E_NDS32_HAS_SATURATION_INST		0x00020000 /* v3, ELF 1.4.  */
266222748Srwatson/* Encription instructions.  */
267222748Srwatson#define E_NDS32_HAS_ENCRIPT_INST		0x00040000
268263198Srwatson/* Doulbe Precision Floating point processor instructions.  */
269263198Srwatson#define E_NDS32_HAS_FPU_DP_INST			0x00080000
270263198Srwatson/* No MAC instruction used.  */
271263198Srwatson#define E_NDS32_HAS_NO_MAC_INST			0x00100000 /* Reclaimed when V2/V3.  */
272263198Srwatson/* MAC instruction using d0/d1.  */
273222748Srwatson#define E_NDS32_HAS_MAC_DX_INST			0x00100000 /* v2.  */
274222748Srwatson/* L2 cache instruction.  */
275263198Srwatson#define E_NDS32_HAS_L2C_INST			0x00200000
276263198Srwatson/* FPU registers configuration when FPU SP/DP presents; 0x00c00000.  */
277263198Srwatson#define E_NDS32_FPU_REG_CONF_SHIFT		22
278222748Srwatson#define E_NDS32_FPU_REG_CONF			(0x3 << E_NDS32_FPU_REG_CONF_SHIFT)
279263198Srwatson#define E_NDS32_FPU_REG_8SP_4DP			0x0
280222748Srwatson#define E_NDS32_FPU_REG_16SP_8DP		0x1
281222748Srwatson#define E_NDS32_FPU_REG_32SP_16DP		0x2
282222748Srwatson#define E_NDS32_FPU_REG_32SP_32DP		0x3
283263198Srwatson/* FPU MAC instruction used.  */
284263198Srwatson#define E_NDS32_HAS_FPU_MAC_INST		0x01000000
285263198Srwatson/* DSP extension.  */
286222748Srwatson#define E_NDS32_HAS_DSP_INST			0x02000000
287263198Srwatson/* PIC enabled.  */
288222748Srwatson#define E_NDS32_HAS_PIC				0x04000000
289222748Srwatson/* Use custom section.  */
290222748Srwatson#define E_NDS32_HAS_CUSTOM_SEC			0x08000000
291222748Srwatson/* Hardware zero-overhead loop enabled.  */
292222748Srwatson#define E_NDS32_HAS_ZOL				(1 << 26)
293222748Srwatson
294222748Srwatson/* 4-bit for ABI signature, allow up to 16 ABIs
295222748Srwatson   0: for OLD ABI V0, phase out
296222748Srwatson   1: for V1 , starting with V0 toolchain
297222748Srwatson   2: for V2
298222748Srwatson   3: for V2FP (fs0, fs1 as function parameter)
299222748Srwatson   4: for AABI  */
300268479Sadrian/* Only old N1213HC use V0.
301268479Sadrian   New ABI is used due to return register is changed to r0 from r5.  */
302268479Sadrian#define EF_NDS_ABI				0x000000F0
303268479Sadrian#define EF_NDS_ABI_SHIFT			4
304268479Sadrian#define E_NDS_ABI_V0				0x00000000
305268479Sadrian#define E_NDS_ABI_V1				0x00000010
306268479Sadrian#define E_NDS_ABI_V2				0x00000020
307268479Sadrian#define E_NDS_ABI_V2FP				0x00000030
308268479Sadrian#define E_NDS_ABI_AABI				0x00000040
309268479Sadrian#define E_NDS_ABI_V2FP_PLUS			0x00000050
310268479Sadrian
311268479Sadrian/* This flag signifies the version of Andes ELF.
312222748Srwatson   Some more information may exist somewhere which is TBD.  */
313222748Srwatson#define EF_NDS32_ELF_VERSION			0x0000000F
314222748Srwatson#define EF_NDS32_ELF_VERSION_SHIFT		0
315222748Srwatson
316222748Srwatson/* Andes ELF Version 1.3 and before.  */
317222748Srwatson#define E_NDS32_ELF_VER_1_2			0x0
318222748Srwatson/* Andes ELF Version 1.31.  */
319222748Srwatson#define E_NDS32_ELF_VER_1_3			0x1
320222748Srwatson/* Andes ELF Version 1.4. Change the way we fix .debug_* and .gcc_except_table.
321222748Srwatson   Change three bit for SAT.  */
322222748Srwatson#define E_NDS32_ELF_VER_1_4			0x2
323222748Srwatson
324222748Srwatson#endif
325222748Srwatson