| /* C-SKY ELF support for BFD. | |
| Copyright (C) 1998-2022 Free Software Foundation, Inc. | |
| Contributed by C-SKY Microsystems and Mentor Graphics. | |
| This file is part of BFD, the Binary File Descriptor library. | |
| This program is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 3 of the License, or | |
| (at your option) any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with this program; if not, write to the Free Software Foundation, | |
| Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ | |
| #ifndef _ELF_CSKY_H | |
| #define _ELF_CSKY_H | |
| #include "elf/reloc-macros.h" | |
| /* Values of relocation types according to the ABI doc. | |
| The order should be consistent with csky bfd reloc type | |
| table in bfd-in2.h. */ | |
| START_RELOC_NUMBERS (elf_csky_reloc_type) | |
| RELOC_NUMBER (R_CKCORE_NONE,0) | |
| RELOC_NUMBER (R_CKCORE_ADDR32,1) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM8BY4,2) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM11BY2,3) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM4BY2,4) | |
| RELOC_NUMBER (R_CKCORE_PCREL32,5) | |
| RELOC_NUMBER (R_CKCORE_PCREL_JSR_IMM11BY2,6) | |
| RELOC_NUMBER (R_CKCORE_GNU_VTINHERIT,7) | |
| RELOC_NUMBER (R_CKCORE_GNU_VTENTRY,8) | |
| RELOC_NUMBER (R_CKCORE_RELATIVE,9) | |
| RELOC_NUMBER (R_CKCORE_COPY,10) | |
| RELOC_NUMBER (R_CKCORE_GLOB_DAT,11) | |
| RELOC_NUMBER (R_CKCORE_JUMP_SLOT,12) | |
| RELOC_NUMBER (R_CKCORE_GOTOFF,13) | |
| RELOC_NUMBER (R_CKCORE_GOTPC,14) | |
| RELOC_NUMBER (R_CKCORE_GOT32,15) | |
| RELOC_NUMBER (R_CKCORE_PLT32,16) | |
| RELOC_NUMBER (R_CKCORE_ADDRGOT,17) | |
| RELOC_NUMBER (R_CKCORE_ADDRPLT,18) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM26BY2,19) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM16BY2,20) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM16BY4,21) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM10BY2,22) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM10BY4,23) | |
| RELOC_NUMBER (R_CKCORE_ADDR_HI16,24) | |
| RELOC_NUMBER (R_CKCORE_ADDR_LO16,25) | |
| RELOC_NUMBER (R_CKCORE_GOTPC_HI16,26) | |
| RELOC_NUMBER (R_CKCORE_GOTPC_LO16,27) | |
| RELOC_NUMBER (R_CKCORE_GOTOFF_HI16,28) | |
| RELOC_NUMBER (R_CKCORE_GOTOFF_LO16,29) | |
| RELOC_NUMBER (R_CKCORE_GOT12,30) | |
| RELOC_NUMBER (R_CKCORE_GOT_HI16,31) | |
| RELOC_NUMBER (R_CKCORE_GOT_LO16,32) | |
| RELOC_NUMBER (R_CKCORE_PLT12,33) | |
| RELOC_NUMBER (R_CKCORE_PLT_HI16,34) | |
| RELOC_NUMBER (R_CKCORE_PLT_LO16,35) | |
| RELOC_NUMBER (R_CKCORE_ADDRGOT_HI16,36) | |
| RELOC_NUMBER (R_CKCORE_ADDRGOT_LO16,37) | |
| RELOC_NUMBER (R_CKCORE_ADDRPLT_HI16,38) | |
| RELOC_NUMBER (R_CKCORE_ADDRPLT_LO16,39) | |
| RELOC_NUMBER (R_CKCORE_PCREL_JSR_IMM26BY2,40) | |
| RELOC_NUMBER (R_CKCORE_TOFFSET_LO16, 41) | |
| RELOC_NUMBER (R_CKCORE_DOFFSET_LO16, 42) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM18BY2, 43) | |
| RELOC_NUMBER (R_CKCORE_DOFFSET_IMM18, 44) | |
| RELOC_NUMBER (R_CKCORE_DOFFSET_IMM18BY2, 45) | |
| RELOC_NUMBER (R_CKCORE_DOFFSET_IMM18BY4, 46) | |
| RELOC_NUMBER (R_CKCORE_GOTOFF_IMM18, 47) | |
| RELOC_NUMBER (R_CKCORE_GOT_IMM18BY4, 48) | |
| RELOC_NUMBER (R_CKCORE_PLT_IMM18BY4, 49) | |
| RELOC_NUMBER (R_CKCORE_PCREL_IMM7BY4, 50) | |
| RELOC_NUMBER (R_CKCORE_TLS_LE32, 51) | |
| RELOC_NUMBER (R_CKCORE_TLS_IE32, 52) | |
| RELOC_NUMBER (R_CKCORE_TLS_GD32, 53) | |
| RELOC_NUMBER (R_CKCORE_TLS_LDM32, 54) | |
| RELOC_NUMBER (R_CKCORE_TLS_LDO32, 55) | |
| RELOC_NUMBER (R_CKCORE_TLS_DTPMOD32, 56) | |
| RELOC_NUMBER (R_CKCORE_TLS_DTPOFF32, 57) | |
| RELOC_NUMBER (R_CKCORE_TLS_TPOFF32, 58) | |
| RELOC_NUMBER (R_CKCORE_PCREL_FLRW_IMM8BY4, 59) | |
| RELOC_NUMBER (R_CKCORE_NOJSRI, 60) | |
| RELOC_NUMBER (R_CKCORE_CALLGRAPH, 61) | |
| RELOC_NUMBER (R_CKCORE_IRELATIVE, 62) | |
| RELOC_NUMBER (R_CKCORE_PCREL_BLOOP_IMM4BY4, 63) | |
| RELOC_NUMBER (R_CKCORE_PCREL_BLOOP_IMM12BY4, 64) | |
| END_RELOC_NUMBERS (R_CKCORE_MAX) | |
| /* Additional section types. */ | |
| #define SHT_CSKY_ATTRIBUTES 0x70000001 /* Section holds attributes. */ | |
| /* Object attribute tags. */ | |
| enum | |
| { | |
| /* 0-3 are generic. */ | |
| /* Arch name for this object file. */ | |
| Tag_CSKY_ARCH_NAME = 4, | |
| Tag_CSKY_CPU_NAME = 5, | |
| /* ISA flags for this object file. */ | |
| Tag_CSKY_ISA_FLAGS, | |
| Tag_CSKY_ISA_EXT_FLAGS, | |
| /* CSKY DSP version used by this object file. */ | |
| Tag_CSKY_DSP_VERSION, | |
| /* CSKY VDSP version used by this object file. */ | |
| Tag_CSKY_VDSP_VERSION, | |
| /* CSKY FPU version used by this object file. */ | |
| Tag_CSKY_FPU_VERSION = 0x10, | |
| /* FPU ABI. params: Soft GR/Hard GR/Hard FR. */ | |
| Tag_CSKY_FPU_ABI, | |
| /* Rounding Support. */ | |
| Tag_CSKY_FPU_ROUNDING, | |
| /* Denormal Support. */ | |
| Tag_CSKY_FPU_DENORMAL, | |
| /* Exeception Support. */ | |
| Tag_CSKY_FPU_Exception, | |
| /* Number Module Support("IEEE 754"). */ | |
| Tag_CSKY_FPU_NUMBER_MODULE, | |
| /* Half/Single/Double. */ | |
| Tag_CSKY_FPU_HARDFP, | |
| Tag_CSKY_MAX, | |
| }; | |
| /* Object attribute values. */ | |
| enum | |
| { | |
| /* Values defined for Tag_CSKY_DSP_VERSION. */ | |
| VAL_CSKY_DSP_VERSION_EXTENSION = 1, /* hi-lo DSP extension. */ | |
| VAL_CSKY_DSP_VERSION_2 = 2, /* CK803s EDSP. */ | |
| }; | |
| enum | |
| { | |
| /* Values defined for Tag_CSKY_VDSP_VERSION. */ | |
| VAL_CSKY_VDSP_VERSION_1 = 1, /* VDSP version 1. */ | |
| VAL_CSKY_VDSP_VERSION_2 /* VDSP version 1. */ | |
| }; | |
| enum | |
| { | |
| /* Values defined for Tag_CSKY_FPU_VERSION. */ | |
| VAL_CSKY_FPU_VERSION_1 = 1, /* ABIV1 FPU. */ | |
| VAL_CSKY_FPU_VERSION_2, /* ABIV2 FPU. */ | |
| }; | |
| enum | |
| { | |
| VAL_CSKY_FPU_ABI_SOFT = 1, | |
| VAL_CSKY_FPU_ABI_SOFTFP, | |
| VAL_CSKY_FPU_ABI_HARD, | |
| }; | |
| enum | |
| { | |
| VAL_CSKY_FPU_HARDFP_HALF = 1, | |
| VAL_CSKY_FPU_HARDFP_SINGLE = 2, | |
| VAL_CSKY_FPU_HARDFP_DOUBLE = 4, | |
| }; | |
| #endif /* _ELF_CSKY_H */ |