xref: /freebsd-src/contrib/llvm-project/llvm/include/llvm/Support/MSP430Attributes.h (revision 349cc55c9796c4596a5b9904cd3281af295f878f)
1*349cc55cSDimitry Andric //===-- MSP430Attributes.h - MSP430 Attributes ------------------*- C++ -*-===//
2*349cc55cSDimitry Andric //
3*349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*349cc55cSDimitry Andric //
7*349cc55cSDimitry Andric //===-----------------------------------------------------------------------===//
8*349cc55cSDimitry Andric ///
9*349cc55cSDimitry Andric /// \file
10*349cc55cSDimitry Andric /// This file contains enumerations for MSP430 ELF build attributes as
11*349cc55cSDimitry Andric /// defined in the MSP430 ELF psABI specification.
12*349cc55cSDimitry Andric ///
13*349cc55cSDimitry Andric /// MSP430 ELF psABI specification
14*349cc55cSDimitry Andric ///
15*349cc55cSDimitry Andric /// https://www.ti.com/lit/pdf/slaa534
16*349cc55cSDimitry Andric ///
17*349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
18*349cc55cSDimitry Andric #ifndef LLVM_SUPPORT_MSP430ATTRIBUTES_H
19*349cc55cSDimitry Andric #define LLVM_SUPPORT_MSP430ATTRIBUTES_H
20*349cc55cSDimitry Andric 
21*349cc55cSDimitry Andric #include "llvm/Support/ELFAttributes.h"
22*349cc55cSDimitry Andric 
23*349cc55cSDimitry Andric namespace llvm {
24*349cc55cSDimitry Andric namespace MSP430Attrs {
25*349cc55cSDimitry Andric 
26*349cc55cSDimitry Andric const TagNameMap &getMSP430AttributeTags();
27*349cc55cSDimitry Andric 
28*349cc55cSDimitry Andric enum AttrType : unsigned {
29*349cc55cSDimitry Andric   // Attribute types in ELF/.MSP430.attributes.
30*349cc55cSDimitry Andric   TagISA = 4,
31*349cc55cSDimitry Andric   TagCodeModel = 6,
32*349cc55cSDimitry Andric   TagDataModel = 8,
33*349cc55cSDimitry Andric   TagEnumSize = 10
34*349cc55cSDimitry Andric };
35*349cc55cSDimitry Andric 
36*349cc55cSDimitry Andric enum ISA { ISAMSP430 = 1, ISAMSP430X = 2 };
37*349cc55cSDimitry Andric enum CodeModel { CMSmall = 1, CMLarge = 2 };
38*349cc55cSDimitry Andric enum DataModel { DMSmall = 1, DMLarge = 2, DMRestricted = 3 };
39*349cc55cSDimitry Andric enum EnumSize { ESSmall = 1, ESInteger = 2, ESDontCare = 3 };
40*349cc55cSDimitry Andric 
41*349cc55cSDimitry Andric } // namespace MSP430Attrs
42*349cc55cSDimitry Andric } // namespace llvm
43*349cc55cSDimitry Andric 
44*349cc55cSDimitry Andric #endif
45