1 |
/* m68hc11 & m68hc12 ELF support for BFD. |
/* m68hc11 & m68hc12 ELF support for BFD. |
2 |
Copyright 1999, 2000 Free Software Foundation, Inc. |
Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
3 |
|
|
4 |
This file is part of BFD, the Binary File Descriptor library. |
This file is part of BFD, the Binary File Descriptor library. |
5 |
|
|
37 |
/* These are GNU extensions to enable C++ vtable garbage collection. */ |
/* These are GNU extensions to enable C++ vtable garbage collection. */ |
38 |
RELOC_NUMBER (R_M68HC11_GNU_VTINHERIT, 9) |
RELOC_NUMBER (R_M68HC11_GNU_VTINHERIT, 9) |
39 |
RELOC_NUMBER (R_M68HC11_GNU_VTENTRY, 10) |
RELOC_NUMBER (R_M68HC11_GNU_VTENTRY, 10) |
40 |
|
|
41 |
|
RELOC_NUMBER (R_M68HC11_24, 11) |
42 |
|
RELOC_NUMBER (R_M68HC11_LO16, 12) |
43 |
|
RELOC_NUMBER (R_M68HC11_PAGE, 13) |
44 |
|
|
45 |
|
/* GNU extension for linker relaxation. |
46 |
|
Mark beginning of a jump instruction (any form). */ |
47 |
|
RELOC_NUMBER (R_M68HC11_RL_JUMP, 20) |
48 |
|
|
49 |
|
/* Mark beginning of Gcc relaxation group instruction. */ |
50 |
|
RELOC_NUMBER (R_M68HC11_RL_GROUP, 21) |
51 |
END_RELOC_NUMBERS (R_M68HC11_max) |
END_RELOC_NUMBERS (R_M68HC11_max) |
52 |
|
|
53 |
|
/* Processor specific flags for the ELF header e_flags field. */ |
54 |
|
|
55 |
|
/* ABI identification. */ |
56 |
|
#define EF_M68HC11_ABI 0x00000000F |
57 |
|
|
58 |
|
/* Integers are 32-bit long. */ |
59 |
|
#define E_M68HC11_I32 0x000000001 |
60 |
|
|
61 |
|
/* Doubles are 64-bit long. */ |
62 |
|
#define E_M68HC11_F64 0x000000002 |
63 |
|
|
64 |
|
/* Uses 68HC12 memory banks. */ |
65 |
|
#define E_M68HC12_BANKS 0x000000004 |
66 |
|
|
67 |
|
#define EF_M68HC11_MACH_MASK 0xF0 |
68 |
|
#define EF_M68HC11_GENERIC 0x00 /* Generic 68HC12/backward compatibility. */ |
69 |
|
#define EF_M68HC12_MACH 0x10 /* 68HC12 microcontroller. */ |
70 |
|
#define EF_M68HCS12_MACH 0x20 /* 68HCS12 microcontroller. */ |
71 |
|
#define EF_M68HC11_MACH(mach) ((mach) & EF_M68HC11_MACH_MASK) |
72 |
|
|
73 |
|
/* True if we can merge machines. A generic HC12 can work on any proc |
74 |
|
but once we have specific code, merge is not possible. */ |
75 |
|
#define EF_M68HC11_CAN_MERGE_MACH(mach1, mach2) \ |
76 |
|
((EF_M68HC11_MACH (mach1) == EF_M68HC11_MACH (mach2)) \ |
77 |
|
|| (EF_M68HC11_MACH (mach1) == EF_M68HC11_GENERIC) \ |
78 |
|
|| (EF_M68HC11_MACH (mach2) == EF_M68HC11_GENERIC)) |
79 |
|
|
80 |
|
#define EF_M68HC11_MERGE_MACH(mach1, mach2) \ |
81 |
|
(((EF_M68HC11_MACH (mach1) == EF_M68HC11_MACH (mach2)) \ |
82 |
|
|| (EF_M68HC11_MACH (mach1) == EF_M68HC11_GENERIC)) ? \ |
83 |
|
EF_M68HC11_MACH (mach2) : EF_M68HC11_MACH (mach1)) |
84 |
|
|
85 |
|
|
86 |
|
/* Special values for the st_other field in the symbol table. These |
87 |
|
are used for 68HC12 to identify far functions (must be called with |
88 |
|
'call' and returns with 'rtc'). */ |
89 |
|
#define STO_M68HC12_FAR 0x80 |
90 |
|
|
91 |
|
/* Identify interrupt handlers. This is used by the debugger to |
92 |
|
correctly compute the stack frame. */ |
93 |
|
#define STO_M68HC12_INTERRUPT 0x40 |
94 |
|
|
95 |
#endif |
#endif |