aboutsummaryrefslogtreecommitdiff
path: root/include/elf/score.h
blob: 84d4bd68107a74d4374a7763c79988b867638c42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* Score ELF support for BFD.
   Copyright (C) 2006-2020 Free Software Foundation, Inc.
   Contributed by 
   Brain.lin (brain.lin@sunplusct.com)
   Mei Ligang (ligang@sunnorth.com.cn)
   Pei-Lin Tsai (pltsai@sunplus.com)

   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_SCORE_H
#define _ELF_SCORE_H

#include "elf/reloc-macros.h"

#define SCORE_SIMULATOR_ACTIVE  1
#define OPC_PTMASK              0xc0000000      /* Parity-bit Mask.  */
#define OPC16_PTMASK		0x00008000
/* The parity-bit denotes.  */
#define OPC_32                  0xc0000000      /* Denotes 32b instruction, (default).  */
#define OPC_16                  0x00000000      /* Denotes 16b instruction.  */
#define OPC_PE                  0x8000          /* Denotes parallel-execution instructions.  */
#define GP_DISP_LABEL           "_gp_disp"

/* Processor specific flags for the ELF header e_flags field:  */
#define EF_SCORE_MACH           0xffff0000      
#define EF_OMIT_PIC_FIXDD       0x0fff0000      
#define E_SCORE_MACH_SCORE3     0x00030000
#define E_SCORE_MACH_SCORE7     0x00070000

/* File contains position independent code.  */
#define EF_SCORE_PIC            0x80000000

/* Fix data dependency.  */
#define EF_SCORE_FIXDEP         0x40000000 

/* Defined and allocated common symbol.  Value is virtual address.  If
   relocated, alignment must be preserved.  */
#define SHN_SCORE_TEXT		(SHN_LORESERVE + 1)
#define SHN_SCORE_DATA		(SHN_LORESERVE + 2)
/* Small common symbol.  */
#define SHN_SCORE_SCOMMON	(SHN_LORESERVE + 3)

/* Processor specific section flags.  */

/* This section must be in the global data area.  */
#define SHF_SCORE_GPREL		0x10000000

/* This section should be merged.  */
#define SHF_SCORE_MERGE		0x20000000

/* This section contains address data of size implied by section
   element size.  */
#define SHF_SCORE_ADDR		0x40000000

/* This section contains string data.  */
#define SHF_SCORE_STRING		0x80000000

/* This section may not be stripped.  */
#define SHF_SCORE_NOSTRIP	0x08000000

/* This section is local to threads.  */
#define SHF_SCORE_LOCAL		0x04000000

/* Linker should generate implicit weak names for this section.  */
#define SHF_SCORE_NAMES		0x02000000

/* Section contais text/data which may be replicated in other sections.
   Linker should retain only one copy.  */
#define SHF_SCORE_NODUPES	0x01000000

/* Processor specific dynamic array tags.  */

/* Base address of the segment.  */
#define DT_SCORE_BASE_ADDRESS	0x70000001
/* Number of local global offset table entries.  */
#define DT_SCORE_LOCAL_GOTNO	0x70000002
/* Number of entries in the .dynsym section.  */
#define DT_SCORE_SYMTABNO	0x70000003
/* Index of first dynamic symbol in global offset table.  */
#define DT_SCORE_GOTSYM		0x70000004
/* Index of first external dynamic symbol not referenced locally.  */
#define DT_SCORE_UNREFEXTNO	0x70000005
/* Number of page table entries in global offset table.  */
#define DT_SCORE_HIPAGENO	0x70000006


/* Processor specific section types.  */


/* Relocation types.  */
START_RELOC_NUMBERS (elf_score_reloc_type)
  RELOC_NUMBER (R_SCORE_NONE,           0)
  RELOC_NUMBER (R_SCORE_HI16,           1)   
  RELOC_NUMBER (R_SCORE_LO16,           2)   
  RELOC_NUMBER (R_SCORE_BCMP,           3)
  RELOC_NUMBER (R_SCORE_24,             4)   
  RELOC_NUMBER (R_SCORE_PC19,           5)  
  RELOC_NUMBER (R_SCORE16_11,           6)   
  RELOC_NUMBER (R_SCORE16_PC8,          7)  
  RELOC_NUMBER (R_SCORE_ABS32,          8)
  RELOC_NUMBER (R_SCORE_ABS16,          9)
  RELOC_NUMBER (R_SCORE_DUMMY2,         10)
  RELOC_NUMBER (R_SCORE_GP15,           11)
  RELOC_NUMBER (R_SCORE_GNU_VTINHERIT,  12)
  RELOC_NUMBER (R_SCORE_GNU_VTENTRY,    13)
  RELOC_NUMBER (R_SCORE_GOT15,          14)
  RELOC_NUMBER (R_SCORE_GOT_LO16,       15)
  RELOC_NUMBER (R_SCORE_CALL15,         16)
  RELOC_NUMBER (R_SCORE_GPREL32,        17)
  RELOC_NUMBER (R_SCORE_REL32,          18)
  RELOC_NUMBER (R_SCORE_DUMMY_HI16,     19)
  RELOC_NUMBER (R_SCORE_IMM30,          20)
  RELOC_NUMBER (R_SCORE_IMM32,          21)
END_RELOC_NUMBERS (R_SCORE_max)

#endif /* _ELF_SCORE_H */