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