xref: /openbmc/qemu/target/xtensa/overlay_tool.h (revision 1be5a765c08cee3a9587c8a8d3fc2ea247b13f9c)
1fcf5ef2aSThomas Huth /*
2fcf5ef2aSThomas Huth  * Copyright (c) 2011, Max Filippov, Open Source and Linux Lab.
3fcf5ef2aSThomas Huth  * All rights reserved.
4fcf5ef2aSThomas Huth  *
5fcf5ef2aSThomas Huth  * Redistribution and use in source and binary forms, with or without
6fcf5ef2aSThomas Huth  * modification, are permitted provided that the following conditions are met:
7fcf5ef2aSThomas Huth  *     * Redistributions of source code must retain the above copyright
8fcf5ef2aSThomas Huth  *       notice, this list of conditions and the following disclaimer.
9fcf5ef2aSThomas Huth  *     * Redistributions in binary form must reproduce the above copyright
10fcf5ef2aSThomas Huth  *       notice, this list of conditions and the following disclaimer in the
11fcf5ef2aSThomas Huth  *       documentation and/or other materials provided with the distribution.
12fcf5ef2aSThomas Huth  *     * Neither the name of the Open Source and Linux Lab nor the
13fcf5ef2aSThomas Huth  *       names of its contributors may be used to endorse or promote products
14fcf5ef2aSThomas Huth  *       derived from this software without specific prior written permission.
15fcf5ef2aSThomas Huth  *
16fcf5ef2aSThomas Huth  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17fcf5ef2aSThomas Huth  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18fcf5ef2aSThomas Huth  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19fcf5ef2aSThomas Huth  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20fcf5ef2aSThomas Huth  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21fcf5ef2aSThomas Huth  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22fcf5ef2aSThomas Huth  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23fcf5ef2aSThomas Huth  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24fcf5ef2aSThomas Huth  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25fcf5ef2aSThomas Huth  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26fcf5ef2aSThomas Huth  */
27fcf5ef2aSThomas Huth 
281b7b26e4SMax Filippov #define XTREG(idx, ofs, bi, sz, al, no, fl, cp, typ, grp, name, \
291b7b26e4SMax Filippov               a1, a2, a3, a4, a5, a6) { \
301b7b26e4SMax Filippov     .targno = (no), \
311b7b26e4SMax Filippov     .flags = (fl), \
321b7b26e4SMax Filippov     .type = (typ), \
331b7b26e4SMax Filippov     .group = (grp), \
341b7b26e4SMax Filippov     .size = (sz), \
351b7b26e4SMax Filippov },
36fcf5ef2aSThomas Huth #define XTREG_END { .targno = -1 },
37fcf5ef2aSThomas Huth 
38fcf5ef2aSThomas Huth #ifndef XCHAL_HAVE_DEPBITS
39fcf5ef2aSThomas Huth #define XCHAL_HAVE_DEPBITS 0
40fcf5ef2aSThomas Huth #endif
41fcf5ef2aSThomas Huth 
42de6b55cbSMax Filippov #ifndef XCHAL_HAVE_DFP
43de6b55cbSMax Filippov #define XCHAL_HAVE_DFP 0
44de6b55cbSMax Filippov #endif
45de6b55cbSMax Filippov 
46de6b55cbSMax Filippov #ifndef XCHAL_HAVE_DFPU_SINGLE_ONLY
47de6b55cbSMax Filippov #define XCHAL_HAVE_DFPU_SINGLE_ONLY 0
48de6b55cbSMax Filippov #endif
49de6b55cbSMax Filippov 
50de6b55cbSMax Filippov #ifndef XCHAL_HAVE_DFPU_SINGLE_DOUBLE
51de6b55cbSMax Filippov #define XCHAL_HAVE_DFPU_SINGLE_DOUBLE XCHAL_HAVE_DFP
52de6b55cbSMax Filippov #endif
53de6b55cbSMax Filippov 
54de6b55cbSMax Filippov /*
55de6b55cbSMax Filippov  * We need to know the type of FP unit, not only its precision.
56de6b55cbSMax Filippov  * Unfortunately XCHAL macros don't tell this explicitly.
57de6b55cbSMax Filippov  */
58de6b55cbSMax Filippov #define XCHAL_HAVE_DFPU (XCHAL_HAVE_DFP || \
59de6b55cbSMax Filippov                          XCHAL_HAVE_DFPU_SINGLE_ONLY || \
60de6b55cbSMax Filippov                          XCHAL_HAVE_DFPU_SINGLE_DOUBLE)
61de6b55cbSMax Filippov 
62fcf5ef2aSThomas Huth #ifndef XCHAL_HAVE_DIV32
63fcf5ef2aSThomas Huth #define XCHAL_HAVE_DIV32 0
64fcf5ef2aSThomas Huth #endif
65fcf5ef2aSThomas Huth 
66fcf5ef2aSThomas Huth #ifndef XCHAL_UNALIGNED_LOAD_HW
67fcf5ef2aSThomas Huth #define XCHAL_UNALIGNED_LOAD_HW 0
68fcf5ef2aSThomas Huth #endif
69fcf5ef2aSThomas Huth 
70fcf5ef2aSThomas Huth #ifndef XCHAL_HAVE_VECBASE
71fcf5ef2aSThomas Huth #define XCHAL_HAVE_VECBASE 0
72fcf5ef2aSThomas Huth #define XCHAL_VECBASE_RESET_VADDR 0
73fcf5ef2aSThomas Huth #endif
74fcf5ef2aSThomas Huth 
7517ab14acSMax Filippov #ifndef XCHAL_RESET_VECTOR0_VADDR
7617ab14acSMax Filippov #define XCHAL_RESET_VECTOR0_VADDR XCHAL_RESET_VECTOR_VADDR
7717ab14acSMax Filippov #endif
7817ab14acSMax Filippov 
7917ab14acSMax Filippov #ifndef XCHAL_RESET_VECTOR1_VADDR
8017ab14acSMax Filippov #define XCHAL_RESET_VECTOR1_VADDR XCHAL_RESET_VECTOR_VADDR
8117ab14acSMax Filippov #endif
8217ab14acSMax Filippov 
832cc2278eSMax Filippov #ifndef XCHAL_HW_VERSION
842cc2278eSMax Filippov #define XCHAL_HW_VERSION (XCHAL_HW_VERSION_MAJOR * 100 \
852cc2278eSMax Filippov                           + XCHAL_HW_VERSION_MINOR)
86fcf5ef2aSThomas Huth #endif
87fcf5ef2aSThomas Huth 
889e03ade4SMax Filippov #ifndef XCHAL_LOOP_BUFFER_SIZE
899e03ade4SMax Filippov #define XCHAL_LOOP_BUFFER_SIZE 0
909e03ade4SMax Filippov #endif
919e03ade4SMax Filippov 
923a3c9dc4SMax Filippov #ifndef XCHAL_HAVE_EXTERN_REGS
933a3c9dc4SMax Filippov #define XCHAL_HAVE_EXTERN_REGS 0
943a3c9dc4SMax Filippov #endif
953a3c9dc4SMax Filippov 
964d04ea35SMax Filippov #ifndef XCHAL_HAVE_MPU
974d04ea35SMax Filippov #define XCHAL_HAVE_MPU 0
984d04ea35SMax Filippov #endif
994d04ea35SMax Filippov 
100b345e140SMax Filippov #ifndef XCHAL_HAVE_EXCLUSIVE
101b345e140SMax Filippov #define XCHAL_HAVE_EXCLUSIVE 0
102b345e140SMax Filippov #endif
103b345e140SMax Filippov 
104fcf5ef2aSThomas Huth #define XCHAL_OPTION(xchal, qemu) ((xchal) ? XTENSA_OPTION_BIT(qemu) : 0)
105fcf5ef2aSThomas Huth 
106fcf5ef2aSThomas Huth #define XTENSA_OPTIONS ( \
107fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_DENSITY, XTENSA_OPTION_CODE_DENSITY) | \
108fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_LOOPS, XTENSA_OPTION_LOOP) | \
109fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_ABSOLUTE_LITERALS, XTENSA_OPTION_EXTENDED_L32R) | \
110fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_MUL16, XTENSA_OPTION_16_BIT_IMUL) | \
111fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_MUL32, XTENSA_OPTION_32_BIT_IMUL) | \
112fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_MUL32_HIGH, XTENSA_OPTION_32_BIT_IMUL_HIGH) | \
113fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_DIV32, XTENSA_OPTION_32_BIT_IDIV) | \
114fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_MAC16, XTENSA_OPTION_MAC16) | \
115fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_NSA, XTENSA_OPTION_MISC_OP_NSA) | \
116fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_MINMAX, XTENSA_OPTION_MISC_OP_MINMAX) | \
117fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_SEXT, XTENSA_OPTION_MISC_OP_SEXT) | \
118fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_CLAMPS, XTENSA_OPTION_MISC_OP_CLAMPS) | \
119fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_CP, XTENSA_OPTION_COPROCESSOR) | \
120fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_BOOLEANS, XTENSA_OPTION_BOOLEAN) | \
121fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_FP, XTENSA_OPTION_FP_COPROCESSOR) | \
122de6b55cbSMax Filippov     XCHAL_OPTION(XCHAL_HAVE_DFPU, XTENSA_OPTION_DFP_COPROCESSOR) | \
123de6b55cbSMax Filippov     XCHAL_OPTION(XCHAL_HAVE_DFPU_SINGLE_ONLY, \
124de6b55cbSMax Filippov                  XTENSA_OPTION_DFPU_SINGLE_ONLY) | \
125fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_RELEASE_SYNC, XTENSA_OPTION_MP_SYNCHRO) | \
126fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_S32C1I, XTENSA_OPTION_CONDITIONAL_STORE) | \
1272cc2278eSMax Filippov     XCHAL_OPTION(((XCHAL_HAVE_S32C1I && XCHAL_HW_VERSION >= 230000) || \
128b345e140SMax Filippov                   XCHAL_HAVE_EXCLUSIVE), XTENSA_OPTION_ATOMCTL) | \
129fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_DEPBITS, XTENSA_OPTION_DEPBITS) | \
130fcf5ef2aSThomas Huth     /* Interrupts and exceptions */ \
131fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_EXCEPTIONS, XTENSA_OPTION_EXCEPTION) | \
132fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_VECBASE, XTENSA_OPTION_RELOCATABLE_VECTOR) | \
133fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_UNALIGNED_LOAD_EXCEPTION, \
134fcf5ef2aSThomas Huth         XTENSA_OPTION_UNALIGNED_EXCEPTION) | \
135fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_INTERRUPTS, XTENSA_OPTION_INTERRUPT) | \
136fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_HIGHPRI_INTERRUPTS, \
137fcf5ef2aSThomas Huth         XTENSA_OPTION_HIGH_PRIORITY_INTERRUPT) | \
138fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_CCOUNT, XTENSA_OPTION_TIMER_INTERRUPT) | \
139fcf5ef2aSThomas Huth     /* Local memory, TODO */ \
1404b37aaa8SMax Filippov     XCHAL_OPTION(XCHAL_ICACHE_SIZE, XTENSA_OPTION_ICACHE) | \
141fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_ICACHE_LINE_LOCKABLE, \
142fcf5ef2aSThomas Huth             XTENSA_OPTION_ICACHE_INDEX_LOCK) | \
1434b37aaa8SMax Filippov     XCHAL_OPTION(XCHAL_DCACHE_SIZE, XTENSA_OPTION_DCACHE) | \
144fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_DCACHE_LINE_LOCKABLE, \
145fcf5ef2aSThomas Huth             XTENSA_OPTION_DCACHE_INDEX_LOCK) | \
146fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_UNALIGNED_LOAD_HW, XTENSA_OPTION_HW_ALIGNMENT) | \
147631a77a0SMax Filippov     XCHAL_OPTION(XCHAL_HAVE_MEM_ECC_PARITY, \
148631a77a0SMax Filippov                  XTENSA_OPTION_MEMORY_ECC_PARITY) | \
149fcf5ef2aSThomas Huth     /* Memory protection and translation */ \
150fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_MIMIC_CACHEATTR, \
151fcf5ef2aSThomas Huth             XTENSA_OPTION_REGION_PROTECTION) | \
152fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_XLT_CACHEATTR, \
153fcf5ef2aSThomas Huth             XTENSA_OPTION_REGION_TRANSLATION) | \
1544d04ea35SMax Filippov     XCHAL_OPTION(XCHAL_HAVE_MPU, XTENSA_OPTION_MPU) | \
155fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_PTP_MMU, XTENSA_OPTION_MMU) | \
156fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_CACHEATTR, XTENSA_OPTION_CACHEATTR) | \
157fcf5ef2aSThomas Huth     /* Other, TODO */ \
158fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_WINDOWED, XTENSA_OPTION_WINDOWED_REGISTER) | \
159fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_DEBUG, XTENSA_OPTION_DEBUG) |\
160fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_NUM_MISC_REGS > 0, XTENSA_OPTION_MISC_SR) | \
161fcf5ef2aSThomas Huth     XCHAL_OPTION(XCHAL_HAVE_THREADPTR, XTENSA_OPTION_THREAD_POINTER) | \
1623a3c9dc4SMax Filippov     XCHAL_OPTION(XCHAL_HAVE_PRID, XTENSA_OPTION_PROCESSOR_ID) | \
1633a3c9dc4SMax Filippov     XCHAL_OPTION(XCHAL_HAVE_EXTERN_REGS, XTENSA_OPTION_EXTERN_REGS))
164fcf5ef2aSThomas Huth 
165fcf5ef2aSThomas Huth #ifndef XCHAL_WINDOW_OF4_VECOFS
166fcf5ef2aSThomas Huth #define XCHAL_WINDOW_OF4_VECOFS         0x00000000
167fcf5ef2aSThomas Huth #define XCHAL_WINDOW_UF4_VECOFS         0x00000040
168fcf5ef2aSThomas Huth #define XCHAL_WINDOW_OF8_VECOFS         0x00000080
169fcf5ef2aSThomas Huth #define XCHAL_WINDOW_UF8_VECOFS         0x000000C0
170fcf5ef2aSThomas Huth #define XCHAL_WINDOW_OF12_VECOFS        0x00000100
171fcf5ef2aSThomas Huth #define XCHAL_WINDOW_UF12_VECOFS        0x00000140
172fcf5ef2aSThomas Huth #endif
173fcf5ef2aSThomas Huth 
174fcf5ef2aSThomas Huth #if XCHAL_HAVE_WINDOWED
175fcf5ef2aSThomas Huth #define WINDOW_VECTORS \
176fcf5ef2aSThomas Huth    [EXC_WINDOW_OVERFLOW4] = XCHAL_WINDOW_OF4_VECOFS + \
177fcf5ef2aSThomas Huth        XCHAL_WINDOW_VECTORS_VADDR, \
178fcf5ef2aSThomas Huth    [EXC_WINDOW_UNDERFLOW4] = XCHAL_WINDOW_UF4_VECOFS + \
179fcf5ef2aSThomas Huth        XCHAL_WINDOW_VECTORS_VADDR, \
180fcf5ef2aSThomas Huth    [EXC_WINDOW_OVERFLOW8] = XCHAL_WINDOW_OF8_VECOFS + \
181fcf5ef2aSThomas Huth        XCHAL_WINDOW_VECTORS_VADDR, \
182fcf5ef2aSThomas Huth    [EXC_WINDOW_UNDERFLOW8] = XCHAL_WINDOW_UF8_VECOFS + \
183fcf5ef2aSThomas Huth        XCHAL_WINDOW_VECTORS_VADDR, \
184fcf5ef2aSThomas Huth    [EXC_WINDOW_OVERFLOW12] = XCHAL_WINDOW_OF12_VECOFS + \
185fcf5ef2aSThomas Huth        XCHAL_WINDOW_VECTORS_VADDR, \
186fcf5ef2aSThomas Huth    [EXC_WINDOW_UNDERFLOW12] = XCHAL_WINDOW_UF12_VECOFS + \
187fcf5ef2aSThomas Huth        XCHAL_WINDOW_VECTORS_VADDR,
188fcf5ef2aSThomas Huth #else
189fcf5ef2aSThomas Huth #define WINDOW_VECTORS
190fcf5ef2aSThomas Huth #endif
191fcf5ef2aSThomas Huth 
192fcf5ef2aSThomas Huth #define EXCEPTION_VECTORS { \
19317ab14acSMax Filippov         [EXC_RESET0] = XCHAL_RESET_VECTOR0_VADDR, \
19417ab14acSMax Filippov         [EXC_RESET1] = XCHAL_RESET_VECTOR1_VADDR, \
195fcf5ef2aSThomas Huth         WINDOW_VECTORS \
196fcf5ef2aSThomas Huth         [EXC_KERNEL] = XCHAL_KERNEL_VECTOR_VADDR, \
197fcf5ef2aSThomas Huth         [EXC_USER] = XCHAL_USER_VECTOR_VADDR, \
198fcf5ef2aSThomas Huth         [EXC_DOUBLE] = XCHAL_DOUBLEEXC_VECTOR_VADDR, \
199fcf5ef2aSThomas Huth         [EXC_DEBUG] = XCHAL_DEBUG_VECTOR_VADDR, \
200fcf5ef2aSThomas Huth     }
201fcf5ef2aSThomas Huth 
202fcf5ef2aSThomas Huth #define INTERRUPT_VECTORS { \
203fcf5ef2aSThomas Huth         0, \
204fcf5ef2aSThomas Huth         0, \
205fcf5ef2aSThomas Huth         XCHAL_INTLEVEL2_VECTOR_VADDR, \
206fcf5ef2aSThomas Huth         XCHAL_INTLEVEL3_VECTOR_VADDR, \
207fcf5ef2aSThomas Huth         XCHAL_INTLEVEL4_VECTOR_VADDR, \
208fcf5ef2aSThomas Huth         XCHAL_INTLEVEL5_VECTOR_VADDR, \
209fcf5ef2aSThomas Huth         XCHAL_INTLEVEL6_VECTOR_VADDR, \
210fcf5ef2aSThomas Huth         XCHAL_INTLEVEL7_VECTOR_VADDR, \
211fcf5ef2aSThomas Huth     }
212fcf5ef2aSThomas Huth 
213fcf5ef2aSThomas Huth #define LEVEL_MASKS { \
214fcf5ef2aSThomas Huth         [1] = XCHAL_INTLEVEL1_MASK, \
215fcf5ef2aSThomas Huth         [2] = XCHAL_INTLEVEL2_MASK, \
216fcf5ef2aSThomas Huth         [3] = XCHAL_INTLEVEL3_MASK, \
217fcf5ef2aSThomas Huth         [4] = XCHAL_INTLEVEL4_MASK, \
218fcf5ef2aSThomas Huth         [5] = XCHAL_INTLEVEL5_MASK, \
219fcf5ef2aSThomas Huth         [6] = XCHAL_INTLEVEL6_MASK, \
220fcf5ef2aSThomas Huth         [7] = XCHAL_INTLEVEL7_MASK, \
221fcf5ef2aSThomas Huth     }
222fcf5ef2aSThomas Huth 
223fcf5ef2aSThomas Huth #define INTTYPE_MASKS { \
224fcf5ef2aSThomas Huth         [INTTYPE_EDGE] = XCHAL_INTTYPE_MASK_EXTERN_EDGE, \
225fcf5ef2aSThomas Huth         [INTTYPE_NMI] = XCHAL_INTTYPE_MASK_NMI, \
226fcf5ef2aSThomas Huth         [INTTYPE_SOFTWARE] = XCHAL_INTTYPE_MASK_SOFTWARE, \
227fcf5ef2aSThomas Huth     }
228fcf5ef2aSThomas Huth 
229fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_EXTERN_LEVEL INTTYPE_LEVEL
230fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_EXTERN_EDGE INTTYPE_EDGE
231fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_NMI INTTYPE_NMI
232fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_SOFTWARE INTTYPE_SOFTWARE
233fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_TIMER INTTYPE_TIMER
234fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_TBD1 INTTYPE_DEBUG
235fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_TBD2 INTTYPE_WRITE_ERR
236fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_WRITE_ERROR INTTYPE_WRITE_ERR
237fcf5ef2aSThomas Huth #define XTHAL_INTTYPE_PROFILING INTTYPE_PROFILING
238944bb332SMax Filippov #define XTHAL_INTTYPE_IDMA_DONE INTTYPE_IDMA_DONE
239944bb332SMax Filippov #define XTHAL_INTTYPE_IDMA_ERR INTTYPE_IDMA_ERR
240944bb332SMax Filippov #define XTHAL_INTTYPE_GS_ERR INTTYPE_GS_ERR
241fcf5ef2aSThomas Huth 
242a7d479eeSMax Filippov #ifndef XCHAL_NMILEVEL
243a7d479eeSMax Filippov #define XCHAL_NMILEVEL (XCHAL_NUM_INTLEVELS + 1)
244a7d479eeSMax Filippov #endif
245fcf5ef2aSThomas Huth 
246fcf5ef2aSThomas Huth #define INTERRUPT(i) { \
247fcf5ef2aSThomas Huth         .level = XCHAL_INT ## i ## _LEVEL, \
248fcf5ef2aSThomas Huth         .inttype = XCHAL_INT ## i ## _TYPE, \
249fcf5ef2aSThomas Huth     }
250fcf5ef2aSThomas Huth 
251fcf5ef2aSThomas Huth #define INTERRUPTS { \
252fcf5ef2aSThomas Huth         [0] = INTERRUPT(0), \
253fcf5ef2aSThomas Huth         [1] = INTERRUPT(1), \
254fcf5ef2aSThomas Huth         [2] = INTERRUPT(2), \
255fcf5ef2aSThomas Huth         [3] = INTERRUPT(3), \
256fcf5ef2aSThomas Huth         [4] = INTERRUPT(4), \
257fcf5ef2aSThomas Huth         [5] = INTERRUPT(5), \
258fcf5ef2aSThomas Huth         [6] = INTERRUPT(6), \
259fcf5ef2aSThomas Huth         [7] = INTERRUPT(7), \
260fcf5ef2aSThomas Huth         [8] = INTERRUPT(8), \
261fcf5ef2aSThomas Huth         [9] = INTERRUPT(9), \
262fcf5ef2aSThomas Huth         [10] = INTERRUPT(10), \
263fcf5ef2aSThomas Huth         [11] = INTERRUPT(11), \
264fcf5ef2aSThomas Huth         [12] = INTERRUPT(12), \
265fcf5ef2aSThomas Huth         [13] = INTERRUPT(13), \
266fcf5ef2aSThomas Huth         [14] = INTERRUPT(14), \
267fcf5ef2aSThomas Huth         [15] = INTERRUPT(15), \
268fcf5ef2aSThomas Huth         [16] = INTERRUPT(16), \
269fcf5ef2aSThomas Huth         [17] = INTERRUPT(17), \
270fcf5ef2aSThomas Huth         [18] = INTERRUPT(18), \
271fcf5ef2aSThomas Huth         [19] = INTERRUPT(19), \
272fcf5ef2aSThomas Huth         [20] = INTERRUPT(20), \
273fcf5ef2aSThomas Huth         [21] = INTERRUPT(21), \
274fcf5ef2aSThomas Huth         [22] = INTERRUPT(22), \
275fcf5ef2aSThomas Huth         [23] = INTERRUPT(23), \
276fcf5ef2aSThomas Huth         [24] = INTERRUPT(24), \
277fcf5ef2aSThomas Huth         [25] = INTERRUPT(25), \
278fcf5ef2aSThomas Huth         [26] = INTERRUPT(26), \
279fcf5ef2aSThomas Huth         [27] = INTERRUPT(27), \
280fcf5ef2aSThomas Huth         [28] = INTERRUPT(28), \
281fcf5ef2aSThomas Huth         [29] = INTERRUPT(29), \
282fcf5ef2aSThomas Huth         [30] = INTERRUPT(30), \
283fcf5ef2aSThomas Huth         [31] = INTERRUPT(31), \
284fcf5ef2aSThomas Huth     }
285fcf5ef2aSThomas Huth 
286fcf5ef2aSThomas Huth #define TIMERINTS { \
287fcf5ef2aSThomas Huth         [0] = XCHAL_TIMER0_INTERRUPT, \
288fcf5ef2aSThomas Huth         [1] = XCHAL_TIMER1_INTERRUPT, \
289fcf5ef2aSThomas Huth         [2] = XCHAL_TIMER2_INTERRUPT, \
290fcf5ef2aSThomas Huth     }
291fcf5ef2aSThomas Huth 
292fcf5ef2aSThomas Huth #define EXTINTS { \
293fcf5ef2aSThomas Huth         [0] = XCHAL_EXTINT0_NUM, \
294fcf5ef2aSThomas Huth         [1] = XCHAL_EXTINT1_NUM, \
295fcf5ef2aSThomas Huth         [2] = XCHAL_EXTINT2_NUM, \
296fcf5ef2aSThomas Huth         [3] = XCHAL_EXTINT3_NUM, \
297fcf5ef2aSThomas Huth         [4] = XCHAL_EXTINT4_NUM, \
298fcf5ef2aSThomas Huth         [5] = XCHAL_EXTINT5_NUM, \
299fcf5ef2aSThomas Huth         [6] = XCHAL_EXTINT6_NUM, \
300fcf5ef2aSThomas Huth         [7] = XCHAL_EXTINT7_NUM, \
301fcf5ef2aSThomas Huth         [8] = XCHAL_EXTINT8_NUM, \
302fcf5ef2aSThomas Huth         [9] = XCHAL_EXTINT9_NUM, \
303fcf5ef2aSThomas Huth         [10] = XCHAL_EXTINT10_NUM, \
304fcf5ef2aSThomas Huth         [11] = XCHAL_EXTINT11_NUM, \
305fcf5ef2aSThomas Huth         [12] = XCHAL_EXTINT12_NUM, \
306fcf5ef2aSThomas Huth         [13] = XCHAL_EXTINT13_NUM, \
307fcf5ef2aSThomas Huth         [14] = XCHAL_EXTINT14_NUM, \
308fcf5ef2aSThomas Huth         [15] = XCHAL_EXTINT15_NUM, \
309fcf5ef2aSThomas Huth         [16] = XCHAL_EXTINT16_NUM, \
310fcf5ef2aSThomas Huth         [17] = XCHAL_EXTINT17_NUM, \
311fcf5ef2aSThomas Huth         [18] = XCHAL_EXTINT18_NUM, \
312fcf5ef2aSThomas Huth         [19] = XCHAL_EXTINT19_NUM, \
313fcf5ef2aSThomas Huth         [20] = XCHAL_EXTINT20_NUM, \
314fcf5ef2aSThomas Huth         [21] = XCHAL_EXTINT21_NUM, \
315fcf5ef2aSThomas Huth         [22] = XCHAL_EXTINT22_NUM, \
316fcf5ef2aSThomas Huth         [23] = XCHAL_EXTINT23_NUM, \
317fcf5ef2aSThomas Huth         [24] = XCHAL_EXTINT24_NUM, \
318fcf5ef2aSThomas Huth         [25] = XCHAL_EXTINT25_NUM, \
319fcf5ef2aSThomas Huth         [26] = XCHAL_EXTINT26_NUM, \
320fcf5ef2aSThomas Huth         [27] = XCHAL_EXTINT27_NUM, \
321fcf5ef2aSThomas Huth         [28] = XCHAL_EXTINT28_NUM, \
322fcf5ef2aSThomas Huth         [29] = XCHAL_EXTINT29_NUM, \
323fcf5ef2aSThomas Huth         [30] = XCHAL_EXTINT30_NUM, \
324fcf5ef2aSThomas Huth         [31] = XCHAL_EXTINT31_NUM, \
325fcf5ef2aSThomas Huth     }
326fcf5ef2aSThomas Huth 
327fcf5ef2aSThomas Huth #define EXCEPTIONS_SECTION \
328fcf5ef2aSThomas Huth     .excm_level = XCHAL_EXCM_LEVEL, \
329fcf5ef2aSThomas Huth     .vecbase = XCHAL_VECBASE_RESET_VADDR, \
330fcf5ef2aSThomas Huth     .exception_vector = EXCEPTION_VECTORS
331fcf5ef2aSThomas Huth 
332fcf5ef2aSThomas Huth #define INTERRUPTS_SECTION \
333fcf5ef2aSThomas Huth     .ninterrupt = XCHAL_NUM_INTERRUPTS, \
334a7d479eeSMax Filippov     .nlevel = XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI, \
335a7d479eeSMax Filippov     .nmi_level = XCHAL_NMILEVEL, \
336fcf5ef2aSThomas Huth     .interrupt_vector = INTERRUPT_VECTORS, \
337fcf5ef2aSThomas Huth     .level_mask = LEVEL_MASKS, \
338fcf5ef2aSThomas Huth     .inttype_mask = INTTYPE_MASKS, \
339fcf5ef2aSThomas Huth     .interrupt = INTERRUPTS, \
340fcf5ef2aSThomas Huth     .nccompare = XCHAL_NUM_TIMERS, \
341fcf5ef2aSThomas Huth     .timerint = TIMERINTS, \
342fcf5ef2aSThomas Huth     .nextint = XCHAL_NUM_EXTINTERRUPTS, \
343fcf5ef2aSThomas Huth     .extint = EXTINTS
344fcf5ef2aSThomas Huth 
345fcf5ef2aSThomas Huth #if XCHAL_HAVE_PTP_MMU
346fcf5ef2aSThomas Huth 
347fcf5ef2aSThomas Huth #define TLB_TEMPLATE(ways, refill_way_size, way56) { \
348fcf5ef2aSThomas Huth         .nways = ways, \
349fcf5ef2aSThomas Huth         .way_size = { \
350fcf5ef2aSThomas Huth             (refill_way_size), (refill_way_size), \
351fcf5ef2aSThomas Huth             (refill_way_size), (refill_way_size), \
352fcf5ef2aSThomas Huth             4, (way56) ? 4 : 2, (way56) ? 8 : 2, 1, 1, 1, \
353fcf5ef2aSThomas Huth         }, \
354fcf5ef2aSThomas Huth         .varway56 = (way56), \
355fcf5ef2aSThomas Huth         .nrefillentries = (refill_way_size) * 4, \
356fcf5ef2aSThomas Huth     }
357fcf5ef2aSThomas Huth 
358fcf5ef2aSThomas Huth #define ITLB(varway56) \
359fcf5ef2aSThomas Huth     TLB_TEMPLATE(7, 1 << XCHAL_ITLB_ARF_ENTRIES_LOG2, varway56)
360fcf5ef2aSThomas Huth 
361fcf5ef2aSThomas Huth #define DTLB(varway56) \
362fcf5ef2aSThomas Huth     TLB_TEMPLATE(10, 1 << XCHAL_DTLB_ARF_ENTRIES_LOG2, varway56)
363fcf5ef2aSThomas Huth 
364fcf5ef2aSThomas Huth #define TLB_SECTION \
365fcf5ef2aSThomas Huth     .itlb = ITLB(XCHAL_HAVE_SPANNING_WAY), \
366fcf5ef2aSThomas Huth     .dtlb = DTLB(XCHAL_HAVE_SPANNING_WAY)
367fcf5ef2aSThomas Huth 
368b68755c1SMax Filippov #ifndef XCHAL_SYSROM0_PADDR
369b68755c1SMax Filippov #define XCHAL_SYSROM0_PADDR 0xfe000000
370b68755c1SMax Filippov #define XCHAL_SYSROM0_SIZE  0x02000000
371b68755c1SMax Filippov #endif
372b68755c1SMax Filippov 
373b68755c1SMax Filippov #ifndef XCHAL_SYSRAM0_PADDR
374b68755c1SMax Filippov #define XCHAL_SYSRAM0_PADDR 0x00000000
375b68755c1SMax Filippov #define XCHAL_SYSRAM0_SIZE  0x08000000
376b68755c1SMax Filippov #endif
377b68755c1SMax Filippov 
378fcf5ef2aSThomas Huth #elif XCHAL_HAVE_XLT_CACHEATTR || XCHAL_HAVE_MIMIC_CACHEATTR
379fcf5ef2aSThomas Huth 
380fcf5ef2aSThomas Huth #define TLB_TEMPLATE { \
381fcf5ef2aSThomas Huth         .nways = 1, \
382fcf5ef2aSThomas Huth         .way_size = { \
383fcf5ef2aSThomas Huth             8, \
384fcf5ef2aSThomas Huth         } \
385fcf5ef2aSThomas Huth     }
386fcf5ef2aSThomas Huth 
387fcf5ef2aSThomas Huth #define TLB_SECTION \
388fcf5ef2aSThomas Huth     .itlb = TLB_TEMPLATE, \
389fcf5ef2aSThomas Huth     .dtlb = TLB_TEMPLATE
390fcf5ef2aSThomas Huth 
391b68755c1SMax Filippov #ifndef XCHAL_SYSROM0_PADDR
39229b39bc7SMax Filippov #define XCHAL_SYSROM0_PADDR 0x50000000
393b68755c1SMax Filippov #define XCHAL_SYSROM0_SIZE  0x04000000
394b68755c1SMax Filippov #endif
395b68755c1SMax Filippov 
396b68755c1SMax Filippov #ifndef XCHAL_SYSRAM0_PADDR
39729b39bc7SMax Filippov #define XCHAL_SYSRAM0_PADDR 0x60000000
398b68755c1SMax Filippov #define XCHAL_SYSRAM0_SIZE  0x04000000
399b68755c1SMax Filippov #endif
400b68755c1SMax Filippov 
4014d04ea35SMax Filippov #elif XCHAL_HAVE_MPU
4024d04ea35SMax Filippov 
4034d04ea35SMax Filippov #ifndef XTENSA_MPU_BG_MAP
404a153a3f7SMax Filippov #ifdef XCHAL_MPU_BACKGROUND_MAP
405a153a3f7SMax Filippov #define XCHAL_MPU_BGMAP(s, vaddr_start, vaddr_last, rights, memtype, x...) \
406a153a3f7SMax Filippov     { .vaddr = (vaddr_start), .attr = ((rights) << 8) | ((memtype) << 12), },
407a153a3f7SMax Filippov 
408a153a3f7SMax Filippov #define XTENSA_MPU_BG_MAP (xtensa_mpu_entry []){\
409a153a3f7SMax Filippov     XCHAL_MPU_BACKGROUND_MAP(0) \
410a153a3f7SMax Filippov }
411a153a3f7SMax Filippov 
412a153a3f7SMax Filippov #define XTENSA_MPU_BG_MAP_ENTRIES XCHAL_MPU_BACKGROUND_ENTRIES
413a153a3f7SMax Filippov #else
4144d04ea35SMax Filippov #define XTENSA_MPU_BG_MAP (xtensa_mpu_entry []){\
4154d04ea35SMax Filippov     { .vaddr = 0, .attr = 0x00006700, }, \
4164d04ea35SMax Filippov }
417a153a3f7SMax Filippov 
418a153a3f7SMax Filippov #define XTENSA_MPU_BG_MAP_ENTRIES 1
419a153a3f7SMax Filippov #endif
4204d04ea35SMax Filippov #endif
4214d04ea35SMax Filippov 
4224d04ea35SMax Filippov #define TLB_SECTION \
4234d04ea35SMax Filippov     .mpu_align = XCHAL_MPU_ALIGN, \
4244d04ea35SMax Filippov     .n_mpu_fg_segments = XCHAL_MPU_ENTRIES, \
425a153a3f7SMax Filippov     .n_mpu_bg_segments = XTENSA_MPU_BG_MAP_ENTRIES, \
4264d04ea35SMax Filippov     .mpu_bg = XTENSA_MPU_BG_MAP
4274d04ea35SMax Filippov 
4284d04ea35SMax Filippov #ifndef XCHAL_SYSROM0_PADDR
4294d04ea35SMax Filippov #define XCHAL_SYSROM0_PADDR 0x50000000
4304d04ea35SMax Filippov #define XCHAL_SYSROM0_SIZE  0x04000000
4314d04ea35SMax Filippov #endif
4324d04ea35SMax Filippov 
4334d04ea35SMax Filippov #ifndef XCHAL_SYSRAM0_PADDR
4344d04ea35SMax Filippov #define XCHAL_SYSRAM0_PADDR 0x60000000
4354d04ea35SMax Filippov #define XCHAL_SYSRAM0_SIZE  0x04000000
4364d04ea35SMax Filippov #endif
4374d04ea35SMax Filippov 
438b68755c1SMax Filippov #else
439b68755c1SMax Filippov 
440b68755c1SMax Filippov #ifndef XCHAL_SYSROM0_PADDR
44129b39bc7SMax Filippov #define XCHAL_SYSROM0_PADDR 0x50000000
442b68755c1SMax Filippov #define XCHAL_SYSROM0_SIZE  0x04000000
443b68755c1SMax Filippov #endif
444b68755c1SMax Filippov 
445b68755c1SMax Filippov #ifndef XCHAL_SYSRAM0_PADDR
44629b39bc7SMax Filippov #define XCHAL_SYSRAM0_PADDR 0x60000000
447b68755c1SMax Filippov #define XCHAL_SYSRAM0_SIZE  0x04000000
448b68755c1SMax Filippov #endif
449b68755c1SMax Filippov 
450fcf5ef2aSThomas Huth #endif
451fcf5ef2aSThomas Huth 
452*ee3eb3a7SMarc-André Lureau #if TARGET_BIG_ENDIAN == (XCHAL_HAVE_BE != 0)
453fcf5ef2aSThomas Huth #define REGISTER_CORE(core) \
454fcf5ef2aSThomas Huth     static void __attribute__((constructor)) register_core(void) \
455fcf5ef2aSThomas Huth     { \
456fcf5ef2aSThomas Huth         static XtensaConfigList node = { \
457fcf5ef2aSThomas Huth             .config = &core, \
458fcf5ef2aSThomas Huth         }; \
459fcf5ef2aSThomas Huth         xtensa_register_core(&node); \
460fcf5ef2aSThomas Huth     }
461fcf5ef2aSThomas Huth #else
462fcf5ef2aSThomas Huth #define REGISTER_CORE(core)
463fcf5ef2aSThomas Huth #endif
464fcf5ef2aSThomas Huth 
465fcf5ef2aSThomas Huth #define DEBUG_SECTION \
466fcf5ef2aSThomas Huth     .debug_level = XCHAL_DEBUGLEVEL, \
467fcf5ef2aSThomas Huth     .nibreak = XCHAL_NUM_IBREAK, \
468fcf5ef2aSThomas Huth     .ndbreak = XCHAL_NUM_DBREAK
469fcf5ef2aSThomas Huth 
4709e03ade4SMax Filippov #define CACHE_SECTION \
4719e03ade4SMax Filippov     .icache_ways = XCHAL_ICACHE_WAYS, \
4729e03ade4SMax Filippov     .dcache_ways = XCHAL_DCACHE_WAYS, \
47375eed0e5SMax Filippov     .dcache_line_bytes = XCHAL_DCACHE_LINESIZE, \
4749e03ade4SMax Filippov     .memctl_mask = \
4759e03ade4SMax Filippov         (XCHAL_ICACHE_SIZE ? MEMCTL_IUSEWAYS_MASK : 0) | \
4769e03ade4SMax Filippov         (XCHAL_DCACHE_SIZE ? \
4779e03ade4SMax Filippov          MEMCTL_DALLOCWAYS_MASK | MEMCTL_DUSEWAYS_MASK : 0) | \
4789e03ade4SMax Filippov         MEMCTL_ISNP | MEMCTL_DSNP | \
4799e03ade4SMax Filippov         (XCHAL_HAVE_LOOPS && XCHAL_LOOP_BUFFER_SIZE ? MEMCTL_IL0EN : 0)
4809e03ade4SMax Filippov 
481b68755c1SMax Filippov #define MEM_LOCATION(name, n) \
482b68755c1SMax Filippov     { \
483b68755c1SMax Filippov         .addr = XCHAL_ ## name ## n ## _PADDR, \
484b68755c1SMax Filippov         .size = XCHAL_ ## name ## n ## _SIZE, \
485b68755c1SMax Filippov     }
486b68755c1SMax Filippov 
487b68755c1SMax Filippov #define MEM_SECTIONS(name) \
488b68755c1SMax Filippov     MEM_LOCATION(name, 0), \
489b68755c1SMax Filippov     MEM_LOCATION(name, 1), \
490b68755c1SMax Filippov     MEM_LOCATION(name, 2), \
491b68755c1SMax Filippov     MEM_LOCATION(name, 3)
492b68755c1SMax Filippov 
493b68755c1SMax Filippov #define MEM_SECTION(name) \
494b68755c1SMax Filippov     .num = XCHAL_NUM_ ## name, \
495b68755c1SMax Filippov     .location = { \
496b68755c1SMax Filippov         MEM_SECTIONS(name) \
497b68755c1SMax Filippov     }
498b68755c1SMax Filippov 
499b68755c1SMax Filippov #define SYSMEM_SECTION(name) \
500b68755c1SMax Filippov     .num = 1, \
501b68755c1SMax Filippov     .location = { \
502b68755c1SMax Filippov         { \
503b68755c1SMax Filippov             .addr = XCHAL_ ## name ## 0_PADDR, \
504b68755c1SMax Filippov             .size = XCHAL_ ## name ## 0_SIZE, \
505b68755c1SMax Filippov         } \
506b68755c1SMax Filippov     }
507b68755c1SMax Filippov 
508b68755c1SMax Filippov #define LOCAL_MEMORIES_SECTION \
509b68755c1SMax Filippov     .instrom = { \
510b68755c1SMax Filippov         MEM_SECTION(INSTROM) \
511b68755c1SMax Filippov     }, \
512b68755c1SMax Filippov     .instram = { \
513b68755c1SMax Filippov         MEM_SECTION(INSTRAM) \
514b68755c1SMax Filippov     }, \
515b68755c1SMax Filippov     .datarom = { \
516b68755c1SMax Filippov         MEM_SECTION(DATAROM) \
517b68755c1SMax Filippov     }, \
518b68755c1SMax Filippov     .dataram = { \
519b68755c1SMax Filippov         MEM_SECTION(DATARAM) \
520b68755c1SMax Filippov     }, \
521b68755c1SMax Filippov     .sysrom = { \
522b68755c1SMax Filippov         SYSMEM_SECTION(SYSROM) \
523b68755c1SMax Filippov     }, \
524b68755c1SMax Filippov     .sysram = { \
525b68755c1SMax Filippov         SYSMEM_SECTION(SYSRAM) \
526b68755c1SMax Filippov     }
527b68755c1SMax Filippov 
528fcf5ef2aSThomas Huth #define CONFIG_SECTION \
5292cc2278eSMax Filippov     .hw_version = XCHAL_HW_VERSION, \
530fcf5ef2aSThomas Huth     .configid = { \
531fcf5ef2aSThomas Huth         XCHAL_HW_CONFIGID0, \
532fcf5ef2aSThomas Huth         XCHAL_HW_CONFIGID1, \
533fcf5ef2aSThomas Huth     }
534fcf5ef2aSThomas Huth 
535fcf5ef2aSThomas Huth #define DEFAULT_SECTIONS \
536fcf5ef2aSThomas Huth     .options = XTENSA_OPTIONS, \
537fcf5ef2aSThomas Huth     .nareg = XCHAL_NUM_AREGS, \
538fcf5ef2aSThomas Huth     .ndepc = (XCHAL_XEA_VERSION >= 2), \
539f40385c9SMax Filippov     .inst_fetch_width = XCHAL_INST_FETCH_WIDTH, \
5405d630cefSMax Filippov     .max_insn_size = XCHAL_MAX_INSTRUCTION_SIZE, \
541cfa9f051SMax Filippov     .use_first_nan = !XCHAL_HAVE_DFPU, \
542fcf5ef2aSThomas Huth     EXCEPTIONS_SECTION, \
543fcf5ef2aSThomas Huth     INTERRUPTS_SECTION, \
544fcf5ef2aSThomas Huth     TLB_SECTION, \
545fcf5ef2aSThomas Huth     DEBUG_SECTION, \
5469e03ade4SMax Filippov     CACHE_SECTION, \
547b68755c1SMax Filippov     LOCAL_MEMORIES_SECTION, \
548fcf5ef2aSThomas Huth     CONFIG_SECTION
549fcf5ef2aSThomas Huth 
550fcf5ef2aSThomas Huth 
551fcf5ef2aSThomas Huth #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI + 1 <= 2
552fcf5ef2aSThomas Huth #define XCHAL_INTLEVEL2_VECTOR_VADDR 0
553fcf5ef2aSThomas Huth #endif
554fcf5ef2aSThomas Huth #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI + 1 <= 3
555fcf5ef2aSThomas Huth #define XCHAL_INTLEVEL3_VECTOR_VADDR 0
556fcf5ef2aSThomas Huth #endif
557fcf5ef2aSThomas Huth #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI + 1 <= 4
558fcf5ef2aSThomas Huth #define XCHAL_INTLEVEL4_VECTOR_VADDR 0
559fcf5ef2aSThomas Huth #endif
560fcf5ef2aSThomas Huth #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI + 1 <= 5
561fcf5ef2aSThomas Huth #define XCHAL_INTLEVEL5_VECTOR_VADDR 0
562fcf5ef2aSThomas Huth #endif
563fcf5ef2aSThomas Huth #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI + 1 <= 6
564fcf5ef2aSThomas Huth #define XCHAL_INTLEVEL6_VECTOR_VADDR 0
565fcf5ef2aSThomas Huth #endif
566fcf5ef2aSThomas Huth #if XCHAL_NUM_INTLEVELS + XCHAL_HAVE_NMI + 1 <= 7
567fcf5ef2aSThomas Huth #define XCHAL_INTLEVEL7_VECTOR_VADDR 0
568fcf5ef2aSThomas Huth #endif
569fcf5ef2aSThomas Huth 
570fcf5ef2aSThomas Huth 
571fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 0
572fcf5ef2aSThomas Huth #define XCHAL_INT0_LEVEL 0
573fcf5ef2aSThomas Huth #define XCHAL_INT0_TYPE 0
574fcf5ef2aSThomas Huth #endif
575fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 1
576fcf5ef2aSThomas Huth #define XCHAL_INT1_LEVEL 0
577fcf5ef2aSThomas Huth #define XCHAL_INT1_TYPE 0
578fcf5ef2aSThomas Huth #endif
579fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 2
580fcf5ef2aSThomas Huth #define XCHAL_INT2_LEVEL 0
581fcf5ef2aSThomas Huth #define XCHAL_INT2_TYPE 0
582fcf5ef2aSThomas Huth #endif
583fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 3
584fcf5ef2aSThomas Huth #define XCHAL_INT3_LEVEL 0
585fcf5ef2aSThomas Huth #define XCHAL_INT3_TYPE 0
586fcf5ef2aSThomas Huth #endif
587fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 4
588fcf5ef2aSThomas Huth #define XCHAL_INT4_LEVEL 0
589fcf5ef2aSThomas Huth #define XCHAL_INT4_TYPE 0
590fcf5ef2aSThomas Huth #endif
591fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 5
592fcf5ef2aSThomas Huth #define XCHAL_INT5_LEVEL 0
593fcf5ef2aSThomas Huth #define XCHAL_INT5_TYPE 0
594fcf5ef2aSThomas Huth #endif
595fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 6
596fcf5ef2aSThomas Huth #define XCHAL_INT6_LEVEL 0
597fcf5ef2aSThomas Huth #define XCHAL_INT6_TYPE 0
598fcf5ef2aSThomas Huth #endif
599fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 7
600fcf5ef2aSThomas Huth #define XCHAL_INT7_LEVEL 0
601fcf5ef2aSThomas Huth #define XCHAL_INT7_TYPE 0
602fcf5ef2aSThomas Huth #endif
603fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 8
604fcf5ef2aSThomas Huth #define XCHAL_INT8_LEVEL 0
605fcf5ef2aSThomas Huth #define XCHAL_INT8_TYPE 0
606fcf5ef2aSThomas Huth #endif
607fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 9
608fcf5ef2aSThomas Huth #define XCHAL_INT9_LEVEL 0
609fcf5ef2aSThomas Huth #define XCHAL_INT9_TYPE 0
610fcf5ef2aSThomas Huth #endif
611fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 10
612fcf5ef2aSThomas Huth #define XCHAL_INT10_LEVEL 0
613fcf5ef2aSThomas Huth #define XCHAL_INT10_TYPE 0
614fcf5ef2aSThomas Huth #endif
615fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 11
616fcf5ef2aSThomas Huth #define XCHAL_INT11_LEVEL 0
617fcf5ef2aSThomas Huth #define XCHAL_INT11_TYPE 0
618fcf5ef2aSThomas Huth #endif
619fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 12
620fcf5ef2aSThomas Huth #define XCHAL_INT12_LEVEL 0
621fcf5ef2aSThomas Huth #define XCHAL_INT12_TYPE 0
622fcf5ef2aSThomas Huth #endif
623fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 13
624fcf5ef2aSThomas Huth #define XCHAL_INT13_LEVEL 0
625fcf5ef2aSThomas Huth #define XCHAL_INT13_TYPE 0
626fcf5ef2aSThomas Huth #endif
627fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 14
628fcf5ef2aSThomas Huth #define XCHAL_INT14_LEVEL 0
629fcf5ef2aSThomas Huth #define XCHAL_INT14_TYPE 0
630fcf5ef2aSThomas Huth #endif
631fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 15
632fcf5ef2aSThomas Huth #define XCHAL_INT15_LEVEL 0
633fcf5ef2aSThomas Huth #define XCHAL_INT15_TYPE 0
634fcf5ef2aSThomas Huth #endif
635fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 16
636fcf5ef2aSThomas Huth #define XCHAL_INT16_LEVEL 0
637fcf5ef2aSThomas Huth #define XCHAL_INT16_TYPE 0
638fcf5ef2aSThomas Huth #endif
639fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 17
640fcf5ef2aSThomas Huth #define XCHAL_INT17_LEVEL 0
641fcf5ef2aSThomas Huth #define XCHAL_INT17_TYPE 0
642fcf5ef2aSThomas Huth #endif
643fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 18
644fcf5ef2aSThomas Huth #define XCHAL_INT18_LEVEL 0
645fcf5ef2aSThomas Huth #define XCHAL_INT18_TYPE 0
646fcf5ef2aSThomas Huth #endif
647fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 19
648fcf5ef2aSThomas Huth #define XCHAL_INT19_LEVEL 0
649fcf5ef2aSThomas Huth #define XCHAL_INT19_TYPE 0
650fcf5ef2aSThomas Huth #endif
651fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 20
652fcf5ef2aSThomas Huth #define XCHAL_INT20_LEVEL 0
653fcf5ef2aSThomas Huth #define XCHAL_INT20_TYPE 0
654fcf5ef2aSThomas Huth #endif
655fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 21
656fcf5ef2aSThomas Huth #define XCHAL_INT21_LEVEL 0
657fcf5ef2aSThomas Huth #define XCHAL_INT21_TYPE 0
658fcf5ef2aSThomas Huth #endif
659fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 22
660fcf5ef2aSThomas Huth #define XCHAL_INT22_LEVEL 0
661fcf5ef2aSThomas Huth #define XCHAL_INT22_TYPE 0
662fcf5ef2aSThomas Huth #endif
663fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 23
664fcf5ef2aSThomas Huth #define XCHAL_INT23_LEVEL 0
665fcf5ef2aSThomas Huth #define XCHAL_INT23_TYPE 0
666fcf5ef2aSThomas Huth #endif
667fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 24
668fcf5ef2aSThomas Huth #define XCHAL_INT24_LEVEL 0
669fcf5ef2aSThomas Huth #define XCHAL_INT24_TYPE 0
670fcf5ef2aSThomas Huth #endif
671fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 25
672fcf5ef2aSThomas Huth #define XCHAL_INT25_LEVEL 0
673fcf5ef2aSThomas Huth #define XCHAL_INT25_TYPE 0
674fcf5ef2aSThomas Huth #endif
675fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 26
676fcf5ef2aSThomas Huth #define XCHAL_INT26_LEVEL 0
677fcf5ef2aSThomas Huth #define XCHAL_INT26_TYPE 0
678fcf5ef2aSThomas Huth #endif
679fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 27
680fcf5ef2aSThomas Huth #define XCHAL_INT27_LEVEL 0
681fcf5ef2aSThomas Huth #define XCHAL_INT27_TYPE 0
682fcf5ef2aSThomas Huth #endif
683fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 28
684fcf5ef2aSThomas Huth #define XCHAL_INT28_LEVEL 0
685fcf5ef2aSThomas Huth #define XCHAL_INT28_TYPE 0
686fcf5ef2aSThomas Huth #endif
687fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 29
688fcf5ef2aSThomas Huth #define XCHAL_INT29_LEVEL 0
689fcf5ef2aSThomas Huth #define XCHAL_INT29_TYPE 0
690fcf5ef2aSThomas Huth #endif
691fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 30
692fcf5ef2aSThomas Huth #define XCHAL_INT30_LEVEL 0
693fcf5ef2aSThomas Huth #define XCHAL_INT30_TYPE 0
694fcf5ef2aSThomas Huth #endif
695fcf5ef2aSThomas Huth #if XCHAL_NUM_INTERRUPTS <= 31
696fcf5ef2aSThomas Huth #define XCHAL_INT31_LEVEL 0
697fcf5ef2aSThomas Huth #define XCHAL_INT31_TYPE 0
698fcf5ef2aSThomas Huth #endif
699fcf5ef2aSThomas Huth 
700fcf5ef2aSThomas Huth 
701fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 0
702fcf5ef2aSThomas Huth #define XCHAL_EXTINT0_NUM 0
703fcf5ef2aSThomas Huth #endif
704fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 1
705fcf5ef2aSThomas Huth #define XCHAL_EXTINT1_NUM 0
706fcf5ef2aSThomas Huth #endif
707fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 2
708fcf5ef2aSThomas Huth #define XCHAL_EXTINT2_NUM 0
709fcf5ef2aSThomas Huth #endif
710fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 3
711fcf5ef2aSThomas Huth #define XCHAL_EXTINT3_NUM 0
712fcf5ef2aSThomas Huth #endif
713fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 4
714fcf5ef2aSThomas Huth #define XCHAL_EXTINT4_NUM 0
715fcf5ef2aSThomas Huth #endif
716fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 5
717fcf5ef2aSThomas Huth #define XCHAL_EXTINT5_NUM 0
718fcf5ef2aSThomas Huth #endif
719fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 6
720fcf5ef2aSThomas Huth #define XCHAL_EXTINT6_NUM 0
721fcf5ef2aSThomas Huth #endif
722fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 7
723fcf5ef2aSThomas Huth #define XCHAL_EXTINT7_NUM 0
724fcf5ef2aSThomas Huth #endif
725fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 8
726fcf5ef2aSThomas Huth #define XCHAL_EXTINT8_NUM 0
727fcf5ef2aSThomas Huth #endif
728fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 9
729fcf5ef2aSThomas Huth #define XCHAL_EXTINT9_NUM 0
730fcf5ef2aSThomas Huth #endif
731fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 10
732fcf5ef2aSThomas Huth #define XCHAL_EXTINT10_NUM 0
733fcf5ef2aSThomas Huth #endif
734fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 11
735fcf5ef2aSThomas Huth #define XCHAL_EXTINT11_NUM 0
736fcf5ef2aSThomas Huth #endif
737fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 12
738fcf5ef2aSThomas Huth #define XCHAL_EXTINT12_NUM 0
739fcf5ef2aSThomas Huth #endif
740fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 13
741fcf5ef2aSThomas Huth #define XCHAL_EXTINT13_NUM 0
742fcf5ef2aSThomas Huth #endif
743fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 14
744fcf5ef2aSThomas Huth #define XCHAL_EXTINT14_NUM 0
745fcf5ef2aSThomas Huth #endif
746fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 15
747fcf5ef2aSThomas Huth #define XCHAL_EXTINT15_NUM 0
748fcf5ef2aSThomas Huth #endif
749fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 16
750fcf5ef2aSThomas Huth #define XCHAL_EXTINT16_NUM 0
751fcf5ef2aSThomas Huth #endif
752fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 17
753fcf5ef2aSThomas Huth #define XCHAL_EXTINT17_NUM 0
754fcf5ef2aSThomas Huth #endif
755fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 18
756fcf5ef2aSThomas Huth #define XCHAL_EXTINT18_NUM 0
757fcf5ef2aSThomas Huth #endif
758fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 19
759fcf5ef2aSThomas Huth #define XCHAL_EXTINT19_NUM 0
760fcf5ef2aSThomas Huth #endif
761fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 20
762fcf5ef2aSThomas Huth #define XCHAL_EXTINT20_NUM 0
763fcf5ef2aSThomas Huth #endif
764fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 21
765fcf5ef2aSThomas Huth #define XCHAL_EXTINT21_NUM 0
766fcf5ef2aSThomas Huth #endif
767fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 22
768fcf5ef2aSThomas Huth #define XCHAL_EXTINT22_NUM 0
769fcf5ef2aSThomas Huth #endif
770fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 23
771fcf5ef2aSThomas Huth #define XCHAL_EXTINT23_NUM 0
772fcf5ef2aSThomas Huth #endif
773fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 24
774fcf5ef2aSThomas Huth #define XCHAL_EXTINT24_NUM 0
775fcf5ef2aSThomas Huth #endif
776fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 25
777fcf5ef2aSThomas Huth #define XCHAL_EXTINT25_NUM 0
778fcf5ef2aSThomas Huth #endif
779fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 26
780fcf5ef2aSThomas Huth #define XCHAL_EXTINT26_NUM 0
781fcf5ef2aSThomas Huth #endif
782fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 27
783fcf5ef2aSThomas Huth #define XCHAL_EXTINT27_NUM 0
784fcf5ef2aSThomas Huth #endif
785fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 28
786fcf5ef2aSThomas Huth #define XCHAL_EXTINT28_NUM 0
787fcf5ef2aSThomas Huth #endif
788fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 29
789fcf5ef2aSThomas Huth #define XCHAL_EXTINT29_NUM 0
790fcf5ef2aSThomas Huth #endif
791fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 30
792fcf5ef2aSThomas Huth #define XCHAL_EXTINT30_NUM 0
793fcf5ef2aSThomas Huth #endif
794fcf5ef2aSThomas Huth #if XCHAL_NUM_EXTINTERRUPTS <= 31
795fcf5ef2aSThomas Huth #define XCHAL_EXTINT31_NUM 0
796fcf5ef2aSThomas Huth #endif
797fcf5ef2aSThomas Huth 
798fcf5ef2aSThomas Huth 
799fcf5ef2aSThomas Huth #define XTHAL_TIMER_UNCONFIGURED 0
800b68755c1SMax Filippov 
801b68755c1SMax Filippov #if XCHAL_NUM_INSTROM < 1
802b68755c1SMax Filippov #define XCHAL_INSTROM0_PADDR 0
803b68755c1SMax Filippov #define XCHAL_INSTROM0_SIZE 0
804b68755c1SMax Filippov #endif
805b68755c1SMax Filippov #if XCHAL_NUM_INSTROM < 2
806b68755c1SMax Filippov #define XCHAL_INSTROM1_PADDR 0
807b68755c1SMax Filippov #define XCHAL_INSTROM1_SIZE 0
808b68755c1SMax Filippov #endif
809b68755c1SMax Filippov #if XCHAL_NUM_INSTROM < 3
810b68755c1SMax Filippov #define XCHAL_INSTROM2_PADDR 0
811b68755c1SMax Filippov #define XCHAL_INSTROM2_SIZE 0
812b68755c1SMax Filippov #endif
813b68755c1SMax Filippov #if XCHAL_NUM_INSTROM < 4
814b68755c1SMax Filippov #define XCHAL_INSTROM3_PADDR 0
815b68755c1SMax Filippov #define XCHAL_INSTROM3_SIZE 0
816b68755c1SMax Filippov #endif
817b68755c1SMax Filippov #if XCHAL_NUM_INSTROM > MAX_NMEMORY
818b68755c1SMax Filippov #error XCHAL_NUM_INSTROM > MAX_NMEMORY
819b68755c1SMax Filippov #endif
820b68755c1SMax Filippov 
821b68755c1SMax Filippov #if XCHAL_NUM_INSTRAM < 1
822b68755c1SMax Filippov #define XCHAL_INSTRAM0_PADDR 0
823b68755c1SMax Filippov #define XCHAL_INSTRAM0_SIZE 0
824b68755c1SMax Filippov #endif
825b68755c1SMax Filippov #if XCHAL_NUM_INSTRAM < 2
826b68755c1SMax Filippov #define XCHAL_INSTRAM1_PADDR 0
827b68755c1SMax Filippov #define XCHAL_INSTRAM1_SIZE 0
828b68755c1SMax Filippov #endif
829b68755c1SMax Filippov #if XCHAL_NUM_INSTRAM < 3
830b68755c1SMax Filippov #define XCHAL_INSTRAM2_PADDR 0
831b68755c1SMax Filippov #define XCHAL_INSTRAM2_SIZE 0
832b68755c1SMax Filippov #endif
833b68755c1SMax Filippov #if XCHAL_NUM_INSTRAM < 4
834b68755c1SMax Filippov #define XCHAL_INSTRAM3_PADDR 0
835b68755c1SMax Filippov #define XCHAL_INSTRAM3_SIZE 0
836b68755c1SMax Filippov #endif
837b68755c1SMax Filippov #if XCHAL_NUM_INSTRAM > MAX_NMEMORY
838b68755c1SMax Filippov #error XCHAL_NUM_INSTRAM > MAX_NMEMORY
839b68755c1SMax Filippov #endif
840b68755c1SMax Filippov 
841b68755c1SMax Filippov #if XCHAL_NUM_DATAROM < 1
842b68755c1SMax Filippov #define XCHAL_DATAROM0_PADDR 0
843b68755c1SMax Filippov #define XCHAL_DATAROM0_SIZE 0
844b68755c1SMax Filippov #endif
845b68755c1SMax Filippov #if XCHAL_NUM_DATAROM < 2
846b68755c1SMax Filippov #define XCHAL_DATAROM1_PADDR 0
847b68755c1SMax Filippov #define XCHAL_DATAROM1_SIZE 0
848b68755c1SMax Filippov #endif
849b68755c1SMax Filippov #if XCHAL_NUM_DATAROM < 3
850b68755c1SMax Filippov #define XCHAL_DATAROM2_PADDR 0
851b68755c1SMax Filippov #define XCHAL_DATAROM2_SIZE 0
852b68755c1SMax Filippov #endif
853b68755c1SMax Filippov #if XCHAL_NUM_DATAROM < 4
854b68755c1SMax Filippov #define XCHAL_DATAROM3_PADDR 0
855b68755c1SMax Filippov #define XCHAL_DATAROM3_SIZE 0
856b68755c1SMax Filippov #endif
857b68755c1SMax Filippov #if XCHAL_NUM_DATAROM > MAX_NMEMORY
858b68755c1SMax Filippov #error XCHAL_NUM_DATAROM > MAX_NMEMORY
859b68755c1SMax Filippov #endif
860b68755c1SMax Filippov 
861b68755c1SMax Filippov #if XCHAL_NUM_DATARAM < 1
862b68755c1SMax Filippov #define XCHAL_DATARAM0_PADDR 0
863b68755c1SMax Filippov #define XCHAL_DATARAM0_SIZE 0
864b68755c1SMax Filippov #endif
865b68755c1SMax Filippov #if XCHAL_NUM_DATARAM < 2
866b68755c1SMax Filippov #define XCHAL_DATARAM1_PADDR 0
867b68755c1SMax Filippov #define XCHAL_DATARAM1_SIZE 0
868b68755c1SMax Filippov #endif
869b68755c1SMax Filippov #if XCHAL_NUM_DATARAM < 3
870b68755c1SMax Filippov #define XCHAL_DATARAM2_PADDR 0
871b68755c1SMax Filippov #define XCHAL_DATARAM2_SIZE 0
872b68755c1SMax Filippov #endif
873b68755c1SMax Filippov #if XCHAL_NUM_DATARAM < 4
874b68755c1SMax Filippov #define XCHAL_DATARAM3_PADDR 0
875b68755c1SMax Filippov #define XCHAL_DATARAM3_SIZE 0
876b68755c1SMax Filippov #endif
877b68755c1SMax Filippov #if XCHAL_NUM_DATARAM > MAX_NMEMORY
878b68755c1SMax Filippov #error XCHAL_NUM_DATARAM > MAX_NMEMORY
879b68755c1SMax Filippov #endif
880