blob: b2f7f3f1cf18312f667111ca38f6101e6eff3e70 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2012
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 * Filename:
38 * ---------
39 * toolchain_dep_lte.h
40 *
41 * Project:
42 * --------
43 * Moly
44 *
45 * Description:
46 * ------------
47 * Macros for different toolchains
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 * ==========================================================================
54 * $Log$
55 *
56 * 08 30 2018 jeremy.chen
57 * [MOLY00348399] [MT6295][LR13.R1.MP] remove legacy macros used in previous platform (toolchain_dep_lte.h )
58 * Remove macros used for legacy platforms
59 *
60 * 05 10 2013 moja.hsu
61 * [MOLY00007625] Maintain code
62 * add LS_PHY_EXTSRAM_RW for el1 to wrap Modis/Target.
63 ****************************************************************************/
64
65
66#ifndef __TOOLCHAIN_DEP_H__
67#define __TOOLCHAIN_DEP_H__
68
69#if defined(__MTK_TARGET__)
70 #if defined(__ARMCC_VERSION)
71 #define LINK_SECTION(x) __attribute__ ((section (x)))
72 #define FUNC_OPTIMIZE(x)
73 #define INLINE __inline
74 #define FUNC_NOINLINE __attribute__ ((noinline))
75 #define GET_RETURN_ADDR() (__return_address())
76 #define PACKED_ATTRIBUTE __attribute__((packed))
77 #elif defined(__GNUC__) /* end of __ARMCC_VERSION */
78 #define LINK_SECTION(x) __attribute__ ((section (x)))
79 #define FUNC_OPTIMIZE(x) __attribute__((optimize(x)))
80 #define INLINE inline
81 #define FUNC_NOINLINE __attribute__ ((noinline))
82 #define GET_RETURN_ADDR() ((unsigned int)__builtin_return_address(0))
83 #define PACKED_ATTRIBUTE __attribute__((packed))
84 #else /* end of __GNUC__ */
85 #error "Unsupported Compiler in Target"
86 #endif
87#else /* Simulator */
88 #if defined(_MSC_VER) && (_MSC_VER >= 1500)
89 void * _ReturnAddress(void);
90 #define LINK_SECTION(x)
91 #define FUNC_OPTIMIZE(x)
92 #define INLINE __inline
93 #define FUNC_NOINLINE
94 #define GET_RETURN_ADDR() ((unsigned int)_ReturnAddress())
95 #define PACKED_ATTRIBUTE /* VC need use #pragma pack(push, 1) ... #pragma pack(pop)*/
96 #else /* end of _MSC_VER */
97 #error "Unsupported Compiler in Simulator"
98 #endif
99#endif /* end of __MTK_TARGET__ && Simulator*/
100
101/* Link Sections */
102#define LS_INTERNCODE LINK_SECTION("INTERNCODE")
103#define LS_INTERNZI LINK_SECTION("INTERNZI")
104#define LS_INTERNZI_TP LINK_SECTION("INTERNZI_TP")
105#define LS_INTSRAM_ROCODE LINK_SECTION("INTSRAM_ROCODE")
106#define LS_INTSRAM_RODATA LINK_SECTION("INTSRAM_RODATA")
107#define LS_INTSRAM_RW LINK_SECTION("INTSRAM_RW")
108#define LS_INTSRAM_ZI LINK_SECTION("INTSRAM_ZI")
109#define LS_INTSRAM_EX_ROCODE LINK_SECTION("INTSRAM_EX_ROCODE")
110#define LS_INTERNRW LINK_SECTION("INTERNRW")
111#define LS_INTERNCONST LINK_SECTION("INTERNCONST")
112#define LS_DRAM_EX_ROCODE LINK_SECTION("DRAM_EX_ROCODE")
113#define LS_EMIINITZI LINK_SECTION("EMIINITZI")
114#define LS_EMIINITCODE LINK_SECTION("EMIINITCODE")
115#define LS_LEADING_PART LINK_SECTION("LEADING_PART")
116#define LS_SECOND_PART LINK_SECTION("SECOND_PART")
117#define LS_SNORCODE LINK_SECTION("SNORCODE")
118#define LS_INTERNBLOCK1_RW LINK_SECTION("INTERNBLOCK1_RW")
119#define LS_INTERNBLOCK2_RW LINK_SECTION("INTERNBLOCK2_RW")
120#define LS_INTERNBLOCK1_ZI LINK_SECTION("INTERNBLOCK1_ZI")
121#define LS_INTERNBLOCK2_ZI LINK_SECTION("INTERNBLOCK2_ZI")
122#define LS_INTERNBLOCK1_CO LINK_SECTION("INTERNBLOCK1_CO")
123#define LS_INTERNBLOCK2_CO LINK_SECTION("INTERNBLOCK2_CO")
124#define LS_SHOULD_NOT_USED_RODATA LINK_SECTION("SHOULD_NOT_USED_RODATA")
125#define LS_DYNAMICCACHEABLERW_NC LINK_SECTION("DYNAMICCACHEABLERW_NC")
126#define LS_DYNAMICCACHEABLEZI_NC LINK_SECTION("DYNAMICCACHEABLEZI_NC")
127#define LS_DYNAMICCACHEABLERW_C LINK_SECTION("DYNAMICCACHEABLERW_C")
128#define LS_DYNAMICCACHEABLEZI_C LINK_SECTION("DYNAMICCACHEABLEZI_C")
129#define LS_PHY_EXTSRAM LINK_SECTION("PHY_EXTSRAM")
130#define LS_PHY_EXTSRAM_RW LINK_SECTION("PHY_EXTSRAM_RW")
131
132#define LINK_SECTION_NONCACHEDRW LINK_SECTION("NONCACHEDRW")
133#define LINK_SECTION_NONCACHEDZI LINK_SECTION("NONCACHEDZI")
134
135
136
137/* if __REDUCE_TCM_SUPPORT__ is defined,
138 * LS_INTXXXCODE_REDUCE_TCM_SUPPORT is placed in normal text section
139 */
140#if defined(__REDUCE_TCM_SUPPORT__)
141 #define LS_INTERNCODE_REDUCE_TCM_SUPPORT
142 #define LS_INTSRAM_ROCODE_REDUCE_TCM_SUPPORT
143#else
144 #define LS_INTERNCODE_REDUCE_TCM_SUPPORT LS_INTSRAM_ROCODE
145 #define LS_INTSRAM_ROCODE_REDUCE_TCM_SUPPORT LS_INTSRAM_ROCODE
146#endif
147
148
149/* Predefined Macro: http://www.cppblog.com/byc/archive/2010/11/15/133663.html
150
151
152C++:
153 __cplusplus
154
155GCC:
156 __GNUC__
157 __GNUC_MINOR__
158 __GNUC_PATCHLEVEL__
159 __GNUG__ equivalent to testing (__GNUC__ && __cplusplus).
160
161MinGW:
162 __MINGW32__
163 __STDC__
164 __GNUC__
165 _WIN32, __WINNT__, __MINGW32__, _X86_, i386, __GNUC__
166
167VC:
168 _WIN32
169 _MSC_VER
170 _ATL_VER
171 _DEBUG Defined when compiling with /LDd, /MDd, /MLd, and /MTd.
172 _M_IX86
173 _MT Defined when /MD or /MDd (Multithreaded DLL) or /MT or /MTd (Multithreaded) is specified.
174 _UNICODE
175
176CYGWIN:
177 __CYGWIN32__
178
179 Intel Compiler:
180 __INTEL_COMPILER
181
182Borland:
183 __WIN32__
184 __BORLANDC_
185
186
187*/
188
189#endif
190
191