Training courses
Kernel and Embedded Linux
Bootlin training courses
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
#include "AVRELFStreamer.h" #include "llvm/BinaryFormat/ELF.h" #include "llvm/MC/MCSubtargetInfo.h" #include "llvm/MC/SubtargetFeature.h" #include "llvm/Support/FormattedStream.h" #include "AVRMCTargetDesc.h" namespace llvm { static unsigned getEFlagsForFeatureSet(const FeatureBitset &Features) { unsigned EFlags = 0; // Set architecture if (Features[AVR::ELFArchAVR1]) EFlags |= ELF::EF_AVR_ARCH_AVR1; else if (Features[AVR::ELFArchAVR2]) EFlags |= ELF::EF_AVR_ARCH_AVR2; else if (Features[AVR::ELFArchAVR25]) EFlags |= ELF::EF_AVR_ARCH_AVR25; else if (Features[AVR::ELFArchAVR3]) EFlags |= ELF::EF_AVR_ARCH_AVR3; else if (Features[AVR::ELFArchAVR31]) EFlags |= ELF::EF_AVR_ARCH_AVR31; else if (Features[AVR::ELFArchAVR35]) EFlags |= ELF::EF_AVR_ARCH_AVR35; else if (Features[AVR::ELFArchAVR4]) EFlags |= ELF::EF_AVR_ARCH_AVR4; else if (Features[AVR::ELFArchAVR5]) EFlags |= ELF::EF_AVR_ARCH_AVR5; else if (Features[AVR::ELFArchAVR51]) EFlags |= ELF::EF_AVR_ARCH_AVR51; else if (Features[AVR::ELFArchAVR6]) EFlags |= ELF::EF_AVR_ARCH_AVR6; else if (Features[AVR::ELFArchTiny]) EFlags |= ELF::EF_AVR_ARCH_AVRTINY; else if (Features[AVR::ELFArchXMEGA1]) EFlags |= ELF::EF_AVR_ARCH_XMEGA1; else if (Features[AVR::ELFArchXMEGA2]) EFlags |= ELF::EF_AVR_ARCH_XMEGA2; else if (Features[AVR::ELFArchXMEGA3]) EFlags |= ELF::EF_AVR_ARCH_XMEGA3; else if (Features[AVR::ELFArchXMEGA4]) EFlags |= ELF::EF_AVR_ARCH_XMEGA4; else if (Features[AVR::ELFArchXMEGA5]) EFlags |= ELF::EF_AVR_ARCH_XMEGA5; else if (Features[AVR::ELFArchXMEGA6]) EFlags |= ELF::EF_AVR_ARCH_XMEGA6; else if (Features[AVR::ELFArchXMEGA7]) EFlags |= ELF::EF_AVR_ARCH_XMEGA7; return EFlags; } AVRELFStreamer::AVRELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI) : AVRTargetStreamer(S) { MCAssembler &MCA = getStreamer().getAssembler(); unsigned EFlags = MCA.getELFHeaderEFlags(); EFlags |= getEFlagsForFeatureSet(STI.getFeatureBits()); MCA.setELFHeaderEFlags(EFlags); } } // end namespace llvm