1c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#ifndef BCC_CONFIG_CONFIG_H
2c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#define BCC_CONFIG_CONFIG_H
3358490082d8435aa36feaff8107aa55c3cf363adLogan
4358490082d8435aa36feaff8107aa55c3cf363adLogan//---------------------------------------------------------------------------
54885cf8889f2290ecd04a02e067cb2f44c3cdf6cLogan Chien// Configuration for Disassembler
61dc6314a03b320f9ba5431834c2deeba13f5f065Logan//---------------------------------------------------------------------------
7358490082d8435aa36feaff8107aa55c3cf363adLogan
8369996246f0e2a33bb1a0aae2a8d9f91a8ffa671Stephen Hines#if DEBUG_MC_DISASSEMBLER
94885cf8889f2290ecd04a02e067cb2f44c3cdf6cLogan Chien#define USE_DISASSEMBLER 1
104885cf8889f2290ecd04a02e067cb2f44c3cdf6cLogan Chien#else
114885cf8889f2290ecd04a02e067cb2f44c3cdf6cLogan Chien#define USE_DISASSEMBLER 0
124885cf8889f2290ecd04a02e067cb2f44c3cdf6cLogan Chien#endif
134885cf8889f2290ecd04a02e067cb2f44c3cdf6cLogan Chien
141704c7400346f4e2405d8703fc866f73f243a104Andrew Hsieh#if defined(__HOST__)
15d7f1bd6a5b27212522a59ce94537ac4431a94794Shih-wei Liao#define DEBUG_DISASSEMBLER_FILE "/tmp/mc-dis.s"
161704c7400346f4e2405d8703fc866f73f243a104Andrew Hsieh#else
17d7f1bd6a5b27212522a59ce94537ac4431a94794Shih-wei Liao#define DEBUG_DISASSEMBLER_FILE "/data/local/tmp/mc-dis.s"
181704c7400346f4e2405d8703fc866f73f243a104Andrew Hsieh#endif // defined(__HOST__)
19358490082d8435aa36feaff8107aa55c3cf363adLogan
20358490082d8435aa36feaff8107aa55c3cf363adLogan//---------------------------------------------------------------------------
211dc6314a03b320f9ba5431834c2deeba13f5f065Logan// Configuration for CodeGen and CompilerRT
221dc6314a03b320f9ba5431834c2deeba13f5f065Logan//---------------------------------------------------------------------------
23358490082d8435aa36feaff8107aa55c3cf363adLogan
243bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien#if defined(FORCE_ARM_CODEGEN)
25358490082d8435aa36feaff8107aa55c3cf363adLogan  #define PROVIDE_ARM_CODEGEN
263bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien  #define DEFAULT_ARM_CODEGEN
273bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien
28c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray#elif defined(FORCE_ARM64_CODEGEN)
291e3247531134c0f578d0df7ad7f02905bf9e0415Stephen Hines  #define PROVIDE_ARM_CODEGEN
30c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray  #define PROVIDE_ARM64_CODEGEN
31c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray  #define DEFAULT_ARM64_CODEGEN
32c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray
3321392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien#elif defined(FORCE_MIPS_CODEGEN)
3421392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien  #define PROVIDE_MIPS_CODEGEN
3521392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien  #define DEFAULT_MIPS_CODEGEN
3621392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien
37d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov#elif defined(FORCE_MIPS64_CODEGEN)
38d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov  #define PROVIDE_MIPS_CODEGEN
39d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov  #define PROVIDE_MIPS64_CODEGEN
40d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov  #define DEFAULT_MIPS64_CODEGEN
41d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov
423bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien#elif defined(FORCE_X86_CODEGEN)
43358490082d8435aa36feaff8107aa55c3cf363adLogan  #define PROVIDE_X86_CODEGEN
440467bc47bf4dd48796ede4f4a4f8ca02dddc33d7Stephen Hines  #define DEFAULT_X86_CODEGEN
45358490082d8435aa36feaff8107aa55c3cf363adLogan
460467bc47bf4dd48796ede4f4a4f8ca02dddc33d7Stephen Hines#elif defined(FORCE_X86_64_CODEGEN)
470467bc47bf4dd48796ede4f4a4f8ca02dddc33d7Stephen Hines  // There is no separate X86_64 code generation target. It is all part of X86.
480467bc47bf4dd48796ede4f4a4f8ca02dddc33d7Stephen Hines  #define PROVIDE_X86_CODEGEN
490467bc47bf4dd48796ede4f4a4f8ca02dddc33d7Stephen Hines  #define DEFAULT_X86_64_CODEGEN
503bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien
513bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien#else
52358490082d8435aa36feaff8107aa55c3cf363adLogan  #define PROVIDE_ARM_CODEGEN
53c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray  #define PROVIDE_ARM64_CODEGEN
5421392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien  #define PROVIDE_MIPS_CODEGEN
55d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov  #define PROVIDE_MIPS64_CODEGEN
56358490082d8435aa36feaff8107aa55c3cf363adLogan  #define PROVIDE_X86_CODEGEN
570467bc47bf4dd48796ede4f4a4f8ca02dddc33d7Stephen Hines  #define PROVIDE_X86_64_CODEGEN
583bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien
593bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien  #if defined(__arm__)
603bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien    #define DEFAULT_ARM_CODEGEN
61867e8ddd05452a10fbfbf1c7340ef8ea3dd44df8Logan Chien  #elif defined(__aarch64__)
62c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray    #define DEFAULT_ARM64_CODEGEN
6321392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien  #elif defined(__mips__)
64d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov    #if defined(__LP64__)
65d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov      #define DEFAULT_MIPS64_CODEGEN
66d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov    #else
67d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov      #define DEFAULT_MIPS_CODEGEN
68d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov    #endif
693bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien  #elif defined(__i386__)
703bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien    #define DEFAULT_X86_CODEGEN
713bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien  #elif defined(__x86_64__)
723bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien    #define DEFAULT_X86_64_CODEGEN
733bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien  #endif
74358490082d8435aa36feaff8107aa55c3cf363adLogan#endif
75358490082d8435aa36feaff8107aa55c3cf363adLogan
76f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#define DEFAULT_ARM_TRIPLE_STRING      "armv7-none-linux-gnueabi"
7799c8a6be8147edece2d052cbf3c52e1d48237cbbShih-wei Liao#define DEFAULT_THUMB_TRIPLE_STRING    "thumbv7-none-linux-gnueabi"
78c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray#define DEFAULT_ARM64_TRIPLE_STRING    "aarch64-none-linux-gnueabi"
79f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#define DEFAULT_MIPS_TRIPLE_STRING     "mipsel-none-linux-gnueabi"
80d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov#define DEFAULT_MIPS64_TRIPLE_STRING   "mips64el-none-linux-gnueabi"
81f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#define DEFAULT_X86_TRIPLE_STRING      "i686-unknown-linux"
82f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang#define DEFAULT_X86_64_TRIPLE_STRING   "x86_64-unknown-linux"
83f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang
84f039d98d346006442b61255a2889b8513a8cd56fYong Chen// Custom DataLayout string for X86 with i64 and f64 set to match the ARM32
85f039d98d346006442b61255a2889b8513a8cd56fYong Chen// alignment requirement of 64-bits.
86f039d98d346006442b61255a2889b8513a8cd56fYong Chen#define X86_CUSTOM_DL_STRING "e-m:e-p:32:32-i64:64-f64:64:64-f80:32-n8:16:32-S128"
87d2d5ee3893220cec256c829a4740a718232f84acPirama Arumuga Nainar// Default DataLayout string for X86.  Present to detect future LLVM datalayout
88d2d5ee3893220cec256c829a4740a718232f84acPirama Arumuga Nainar// changes so X86_CUSTOM_DL_STRING above can be modified appropriately.
89d2d5ee3893220cec256c829a4740a718232f84acPirama Arumuga Nainar#define X86_DEFAULT_DL_STRING "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
90f039d98d346006442b61255a2889b8513a8cd56fYong Chen
91358490082d8435aa36feaff8107aa55c3cf363adLogan#if defined(DEFAULT_ARM_CODEGEN)
92f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_ARM_TRIPLE_STRING
93c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray#elif defined(DEFAULT_ARM64_CODEGEN)
94c2074caf075818abb6d3689ad924ca09f4a5ba1fTim Murray  #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_ARM64_TRIPLE_STRING
9521392f0642029bb5c41e3255ae7a302a337ecd6bLogan Chien#elif defined(DEFAULT_MIPS_CODEGEN)
96f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_MIPS_TRIPLE_STRING
97d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov#elif defined(DEFAULT_MIPS64_CODEGEN)
98d5a4204de2cd1fd1601904f044137309ff6b7285Dragoslav Sicarov  #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_MIPS64_TRIPLE_STRING
99358490082d8435aa36feaff8107aa55c3cf363adLogan#elif defined(DEFAULT_X86_CODEGEN)
100f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_X86_TRIPLE_STRING
1013bb77072f4dd09c26d7397f92b7eb8b5d0f79de7Logan Chien#elif defined(DEFAULT_X86_64_CODEGEN)
102f74ee1940ac8e01c862e90de49eb10982648f6a1Zonr Chang  #define DEFAULT_TARGET_TRIPLE_STRING DEFAULT_X86_64_TRIPLE_STRING
103358490082d8435aa36feaff8107aa55c3cf363adLogan#endif
104358490082d8435aa36feaff8107aa55c3cf363adLogan
105358490082d8435aa36feaff8107aa55c3cf363adLogan#if (defined(__VFP_FP__) && !defined(__SOFTFP__))
106358490082d8435aa36feaff8107aa55c3cf363adLogan  #define ARM_USE_VFP
107358490082d8435aa36feaff8107aa55c3cf363adLogan#endif
108358490082d8435aa36feaff8107aa55c3cf363adLogan
109358490082d8435aa36feaff8107aa55c3cf363adLogan//---------------------------------------------------------------------------
110358490082d8435aa36feaff8107aa55c3cf363adLogan
111c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#endif // BCC_CONFIG_CONFIG_H
112