Subversion Repositories Kolibri OS

Rev

Rev 5191 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5191 serge 1
/* COFF information for the Intel i860.
2
 
6324 serge 3
   Copyright (C) 2001-2015 Free Software Foundation, Inc.
5191 serge 4
 
5
   This program is free software; you can redistribute it and/or modify
6
   it under the terms of the GNU General Public License as published by
7
   the Free Software Foundation; either version 3 of the License, or
8
   (at your option) any later version.
9
 
10
   This program is distributed in the hope that it will be useful,
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
   GNU General Public License for more details.
14
 
15
   You should have received a copy of the GNU General Public License
16
   along with this program; if not, write to the Free Software
17
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18
   MA 02110-1301, USA.  */
19
 
20
/* This file was hacked from i386.h   [dolan@ssd.intel.com] */
21
 
22
#define L_LNNO_SIZE 2
23
#include "coff/external.h"
24
 
25
/* Bits for f_flags:
26
 	F_RELFLG	relocation info stripped from file
27
 	F_EXEC		file is executable (no unresolved external references)
28
 	F_LNNO		line numbers stripped from file
29
 	F_LSYMS		local symbols stripped from file
30
 	F_AR32WR	file has byte ordering of an AR32WR machine (e.g. vax).  */
31
 
32
#define F_RELFLG	(0x0001)
33
#define F_EXEC		(0x0002)
34
#define F_LNNO		(0x0004)
35
#define F_LSYMS		(0x0008)
36
 
37
#define	I860MAGIC	0x14d
38
 
39
#define I860BADMAG(x)   ((x).f_magic != I860MAGIC)
40
 
41
#undef AOUTSZ
42
#define AOUTSZ 36
43
 
44
/* FIXME: What are the a.out magic numbers?  */
45
 
46
#define _ETEXT	"etext"
47
 
48
/********************** RELOCATION DIRECTIVES **********************/
49
 
50
struct external_reloc
51
{
52
  char r_vaddr[4];
53
  char r_symndx[4];
54
  char r_type[2];
55
};
56
 
57
#define RELOC struct external_reloc
58
#define RELSZ 10
59
 
60
/* The relocation directory entry types.
61
     PAIR   : The low half that follows relates to the preceding HIGH[ADJ].
62
     HIGH   : The high half of a 32-bit constant.
63
     LOWn   : The low half, insn bits 15..(n-1), 2^n-byte aligned.
64
     SPLITn : The low half, insn bits 20..16 and 10..(n-1), 2^n-byte aligned.
65
     HIGHADJ: Similar to HIGH, but with adjustment.
66
     BRADDR : 26-bit branch displacement.
67
 
68
   Note: The Intel assembler manual lists LOW4 as one of the
69
   relocation types, but it appears to be useless for the i860.
70
   We will recognize it anyway, just in case it actually appears in
71
   any object files.  */
72
 
73
enum {
74
  COFF860_R_PAIR	= 0x1c,
75
  COFF860_R_HIGH	= 0x1e,
76
  COFF860_R_LOW0	= 0x1f,
77
  COFF860_R_LOW1	= 0x20,
78
  COFF860_R_LOW2	= 0x21,
79
  COFF860_R_LOW3	= 0x22,
80
  COFF860_R_LOW4	= 0x23,
81
  COFF860_R_SPLIT0	= 0x24,
82
  COFF860_R_SPLIT1	= 0x25,
83
  COFF860_R_SPLIT2	= 0x26,
84
  COFF860_R_HIGHADJ	= 0x27,
85
  COFF860_R_BRADDR	= 0x28
86
};
87