16f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//===- HexagonGNUInfo.h ---------------------------------------------------===//
26f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//
36f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//                     The MCLinker Project
46f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//
56f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// This file is distributed under the University of Illinois Open Source
66f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines// License. See LICENSE.TXT for details.
76f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//
86f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines//===----------------------------------------------------------------------===//
9551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#ifndef TARGET_HEXAGON_HEXAGONGNUINFO_H
10551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines#define TARGET_HEXAGON_HEXAGONGNUINFO_H
116f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#include <mcld/Target/GNUInfo.h>
12f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines#include <mcld/TargetOptions.h>
136f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
146f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#include <llvm/Support/ELF.h>
156f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
166f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesnamespace mcld {
176f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
186f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesclass HexagonGNUInfo : public GNUInfo
196f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines{
206f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinespublic:
21f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  enum CPUType {
22f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines    V3 = 0x2,
23f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines    V4 = 0x3,
24f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines    V5
25f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  };
26f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
27f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinespublic:
28f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  HexagonGNUInfo(const TargetOptions& pTargetOptions);
296f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
306f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint32_t machine() const { return llvm::ELF::EM_HEXAGON; }
316f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
326f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  uint64_t defaultTextSegmentAddr() const { return 0x0; }
336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines  /// flags - the value of ElfXX_Ehdr::e_flags
35f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  uint64_t flags() const;
36f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines
37f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hinesprivate:
38f7ac0f19a1c8d0ad14bcf6456ce368b830fea886Stephen Hines  const TargetOptions& m_Options;
396f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines};
406f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
416f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines} // namespace of mcld
426f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
436f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines#endif
446f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines
45