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