xref: /netbsd-src/external/gpl3/gdb/dist/include/elf/csky.h (revision e663ba6e3a60083e70de702e9d54bf486a57b6a7)
14559860eSchristos /* C-SKY ELF support for BFD.
2*e663ba6eSchristos    Copyright (C) 1998-2024 Free Software Foundation, Inc.
34559860eSchristos    Contributed by C-SKY Microsystems and Mentor Graphics.
44559860eSchristos 
54559860eSchristos    This file is part of BFD, the Binary File Descriptor library.
64559860eSchristos 
74559860eSchristos    This program is free software; you can redistribute it and/or modify
84559860eSchristos    it under the terms of the GNU General Public License as published by
94559860eSchristos    the Free Software Foundation; either version 3 of the License, or
104559860eSchristos    (at your option) any later version.
114559860eSchristos 
124559860eSchristos    This program is distributed in the hope that it will be useful,
134559860eSchristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
144559860eSchristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
154559860eSchristos    GNU General Public License for more details.
164559860eSchristos 
174559860eSchristos    You should have received a copy of the GNU General Public License
184559860eSchristos    along with this program; if not, write to the Free Software Foundation,
194559860eSchristos    Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
204559860eSchristos 
214559860eSchristos #ifndef _ELF_CSKY_H
224559860eSchristos #define _ELF_CSKY_H
234559860eSchristos 
244559860eSchristos #include "elf/reloc-macros.h"
254559860eSchristos 
264559860eSchristos /* Values of relocation types according to the ABI doc.
274559860eSchristos    The order should be consistent with csky bfd reloc type
284559860eSchristos    table in bfd-in2.h.  */
294559860eSchristos START_RELOC_NUMBERS (elf_csky_reloc_type)
304559860eSchristos     RELOC_NUMBER (R_CKCORE_NONE,0)
314559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDR32,1)
324559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM8BY4,2)
334559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM11BY2,3)
344559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM4BY2,4)
354559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL32,5)
364559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_JSR_IMM11BY2,6)
374559860eSchristos     RELOC_NUMBER (R_CKCORE_GNU_VTINHERIT,7)
384559860eSchristos     RELOC_NUMBER (R_CKCORE_GNU_VTENTRY,8)
394559860eSchristos     RELOC_NUMBER (R_CKCORE_RELATIVE,9)
404559860eSchristos     RELOC_NUMBER (R_CKCORE_COPY,10)
414559860eSchristos     RELOC_NUMBER (R_CKCORE_GLOB_DAT,11)
424559860eSchristos     RELOC_NUMBER (R_CKCORE_JUMP_SLOT,12)
434559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTOFF,13)
444559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTPC,14)
454559860eSchristos     RELOC_NUMBER (R_CKCORE_GOT32,15)
464559860eSchristos     RELOC_NUMBER (R_CKCORE_PLT32,16)
474559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDRGOT,17)
484559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDRPLT,18)
494559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM26BY2,19)
504559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM16BY2,20)
514559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM16BY4,21)
524559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM10BY2,22)
534559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM10BY4,23)
544559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDR_HI16,24)
554559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDR_LO16,25)
564559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTPC_HI16,26)
574559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTPC_LO16,27)
584559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTOFF_HI16,28)
594559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTOFF_LO16,29)
604559860eSchristos     RELOC_NUMBER (R_CKCORE_GOT12,30)
614559860eSchristos     RELOC_NUMBER (R_CKCORE_GOT_HI16,31)
624559860eSchristos     RELOC_NUMBER (R_CKCORE_GOT_LO16,32)
634559860eSchristos     RELOC_NUMBER (R_CKCORE_PLT12,33)
644559860eSchristos     RELOC_NUMBER (R_CKCORE_PLT_HI16,34)
654559860eSchristos     RELOC_NUMBER (R_CKCORE_PLT_LO16,35)
664559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDRGOT_HI16,36)
674559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDRGOT_LO16,37)
684559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDRPLT_HI16,38)
694559860eSchristos     RELOC_NUMBER (R_CKCORE_ADDRPLT_LO16,39)
704559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_JSR_IMM26BY2,40)
714559860eSchristos     RELOC_NUMBER (R_CKCORE_TOFFSET_LO16, 41)
724559860eSchristos     RELOC_NUMBER (R_CKCORE_DOFFSET_LO16, 42)
734559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM18BY2, 43)
744559860eSchristos     RELOC_NUMBER (R_CKCORE_DOFFSET_IMM18, 44)
754559860eSchristos     RELOC_NUMBER (R_CKCORE_DOFFSET_IMM18BY2, 45)
764559860eSchristos     RELOC_NUMBER (R_CKCORE_DOFFSET_IMM18BY4, 46)
774559860eSchristos     RELOC_NUMBER (R_CKCORE_GOTOFF_IMM18, 47)
784559860eSchristos     RELOC_NUMBER (R_CKCORE_GOT_IMM18BY4, 48)
794559860eSchristos     RELOC_NUMBER (R_CKCORE_PLT_IMM18BY4, 49)
804559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_IMM7BY4, 50)
814559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_LE32, 51)
824559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_IE32, 52)
834559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_GD32, 53)
844559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_LDM32, 54)
854559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_LDO32, 55)
864559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_DTPMOD32, 56)
874559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_DTPOFF32, 57)
884559860eSchristos     RELOC_NUMBER (R_CKCORE_TLS_TPOFF32, 58)
894559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_FLRW_IMM8BY4, 59)
904559860eSchristos     RELOC_NUMBER (R_CKCORE_NOJSRI, 60)
914559860eSchristos     RELOC_NUMBER (R_CKCORE_CALLGRAPH, 61)
924559860eSchristos     RELOC_NUMBER (R_CKCORE_IRELATIVE, 62)
934559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_BLOOP_IMM4BY4, 63)
944559860eSchristos     RELOC_NUMBER (R_CKCORE_PCREL_BLOOP_IMM12BY4, 64)
954559860eSchristos END_RELOC_NUMBERS (R_CKCORE_MAX)
964559860eSchristos 
978dffb485Schristos /* Additional section types.  */
988dffb485Schristos #define SHT_CSKY_ATTRIBUTES       0x70000001 /* Section holds attributes.  */
998dffb485Schristos 
1008dffb485Schristos /* Object attribute tags.  */
1018dffb485Schristos enum
1028dffb485Schristos {
1038dffb485Schristos   /* 0-3 are generic. */
1048dffb485Schristos   /* Arch name for this object file.  */
1058dffb485Schristos   Tag_CSKY_ARCH_NAME = 4,
1068dffb485Schristos   Tag_CSKY_CPU_NAME = 5,
1078dffb485Schristos 
1088dffb485Schristos   /* ISA flags for this object file.  */
1098dffb485Schristos   Tag_CSKY_ISA_FLAGS,
1108dffb485Schristos   Tag_CSKY_ISA_EXT_FLAGS,
1118dffb485Schristos 
1128dffb485Schristos   /* CSKY DSP version used by this object file.  */
1138dffb485Schristos   Tag_CSKY_DSP_VERSION,
1148dffb485Schristos 
1158dffb485Schristos   /* CSKY VDSP version used by this object file.  */
1168dffb485Schristos   Tag_CSKY_VDSP_VERSION,
1178dffb485Schristos 
1188dffb485Schristos   /* CSKY FPU version used by this object file.  */
1198dffb485Schristos   Tag_CSKY_FPU_VERSION = 0x10,
1208dffb485Schristos   /* FPU ABI.  params: Soft GR/Hard GR/Hard FR. */
1218dffb485Schristos   Tag_CSKY_FPU_ABI,
1228dffb485Schristos   /* Rounding Support.  */
1238dffb485Schristos   Tag_CSKY_FPU_ROUNDING,
1248dffb485Schristos   /* Denormal Support.  */
1258dffb485Schristos   Tag_CSKY_FPU_DENORMAL,
1268dffb485Schristos   /* Exeception Support.  */
1278dffb485Schristos   Tag_CSKY_FPU_Exception,
1288dffb485Schristos   /* Number Module Support("IEEE 754").  */
1298dffb485Schristos   Tag_CSKY_FPU_NUMBER_MODULE,
1308dffb485Schristos   /* Half/Single/Double.  */
1318dffb485Schristos   Tag_CSKY_FPU_HARDFP,
1328dffb485Schristos 
1338dffb485Schristos   Tag_CSKY_MAX,
1348dffb485Schristos };
1358dffb485Schristos 
1368dffb485Schristos /* Object attribute values.  */
1378dffb485Schristos enum
1388dffb485Schristos {
1398dffb485Schristos   /* Values defined for Tag_CSKY_DSP_VERSION.  */
1408dffb485Schristos   VAL_CSKY_DSP_VERSION_EXTENSION = 1,	/* hi-lo DSP extension.  */
1418dffb485Schristos   VAL_CSKY_DSP_VERSION_2 = 2,		/* CK803s EDSP.  */
1428dffb485Schristos };
1438dffb485Schristos 
1448dffb485Schristos enum
1458dffb485Schristos {
1468dffb485Schristos   /* Values defined for Tag_CSKY_VDSP_VERSION.  */
1478dffb485Schristos   VAL_CSKY_VDSP_VERSION_1 = 1,	/* VDSP version 1.  */
1488dffb485Schristos   VAL_CSKY_VDSP_VERSION_2	/* VDSP version 1.  */
1498dffb485Schristos };
1508dffb485Schristos 
1518dffb485Schristos enum
1528dffb485Schristos {
1538dffb485Schristos   /* Values defined for Tag_CSKY_FPU_VERSION.  */
1548dffb485Schristos   VAL_CSKY_FPU_VERSION_1 = 1,	/* ABIV1 FPU.  */
1558dffb485Schristos   VAL_CSKY_FPU_VERSION_2,	/* ABIV2 FPU.  */
1568dffb485Schristos };
1578dffb485Schristos 
1588dffb485Schristos enum
1598dffb485Schristos {
1608dffb485Schristos   VAL_CSKY_FPU_ABI_SOFT = 1,
1618dffb485Schristos   VAL_CSKY_FPU_ABI_SOFTFP,
1628dffb485Schristos   VAL_CSKY_FPU_ABI_HARD,
1638dffb485Schristos };
1648dffb485Schristos 
1658dffb485Schristos enum
1668dffb485Schristos {
1678dffb485Schristos   VAL_CSKY_FPU_HARDFP_HALF = 1,
1688dffb485Schristos   VAL_CSKY_FPU_HARDFP_SINGLE = 2,
1698dffb485Schristos   VAL_CSKY_FPU_HARDFP_DOUBLE = 4,
1708dffb485Schristos };
1718dffb485Schristos 
1724559860eSchristos #endif /* _ELF_CSKY_H  */
173