xref: /netbsd-src/external/gpl3/gdb/dist/include/xtensa-dynconfig.h (revision e663ba6e3a60083e70de702e9d54bf486a57b6a7)
14b169a6bSchristos /* Xtensa configuration settings.
2*e663ba6eSchristos    Copyright (C) 2022-2024 Free Software Foundation, Inc.
34b169a6bSchristos 
44b169a6bSchristos    This program is free software; you can redistribute it and/or modify
54b169a6bSchristos    it under the terms of the GNU General Public License as published by
64b169a6bSchristos    the Free Software Foundation; either version 2, or (at your option)
74b169a6bSchristos    any later version.
84b169a6bSchristos 
94b169a6bSchristos    This program is distributed in the hope that it will be useful, but
104b169a6bSchristos    WITHOUT ANY WARRANTY; without even the implied warranty of
114b169a6bSchristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
124b169a6bSchristos    General Public License for more details.
134b169a6bSchristos 
144b169a6bSchristos    You should have received a copy of the GNU General Public License
154b169a6bSchristos    along with this program; if not, write to the Free Software
164b169a6bSchristos    Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
174b169a6bSchristos 
184b169a6bSchristos #ifndef XTENSA_DYNCONFIG_H
194b169a6bSchristos #define XTENSA_DYNCONFIG_H
204b169a6bSchristos 
214b169a6bSchristos #ifdef __cplusplus
224b169a6bSchristos extern "C" {
234b169a6bSchristos #endif
244b169a6bSchristos 
254b169a6bSchristos /*
264b169a6bSchristos  * Config versioning.
274b169a6bSchristos  *
284b169a6bSchristos  * When new config entries need to be passed through dynconfig
294b169a6bSchristos  * create new xtensa_config_v<N> structure and put them there.
304b169a6bSchristos  * Declare new function xtensa_get_config_v<N> (void).
314b169a6bSchristos  * Define corresponding X*HAL_* macros by accessing xtensa_get_config_v<N> ().
324b169a6bSchristos  * Define macro XTENSA_CONFIG_V<N>_ENTRY_LIST by listing
334b169a6bSchristos  * XTENSA_CONFIG_ENTRY for every entry in the new structure.
344b169a6bSchristos  * Add constant definition for the new xtensa_config_v<N> to the
354b169a6bSchristos  * XTENSA_CONFIG_INSTANCE_LIST.
364b169a6bSchristos  * Add XTENSA_CONFIG_V<N>_ENTRY_LIST to the XTENSA_CONFIG_ENTRY_LIST.
374b169a6bSchristos  *
384b169a6bSchristos  * On the user side (gcc/binutils/...) add definition for the function
394b169a6bSchristos  * xtensa_get_config_v<N> (void).
404b169a6bSchristos  */
414b169a6bSchristos 
424b169a6bSchristos struct xtensa_config_v1
434b169a6bSchristos {
444b169a6bSchristos   int xchal_have_be;
454b169a6bSchristos   int xchal_have_density;
464b169a6bSchristos   int xchal_have_const16;
474b169a6bSchristos   int xchal_have_abs;
484b169a6bSchristos   int xchal_have_addx;
494b169a6bSchristos   int xchal_have_l32r;
504b169a6bSchristos   int xshal_use_absolute_literals;
514b169a6bSchristos   int xshal_have_text_section_literals;
524b169a6bSchristos   int xchal_have_mac16;
534b169a6bSchristos   int xchal_have_mul16;
544b169a6bSchristos   int xchal_have_mul32;
554b169a6bSchristos   int xchal_have_mul32_high;
564b169a6bSchristos   int xchal_have_div32;
574b169a6bSchristos   int xchal_have_nsa;
584b169a6bSchristos   int xchal_have_minmax;
594b169a6bSchristos   int xchal_have_sext;
604b169a6bSchristos   int xchal_have_loops;
614b169a6bSchristos   int xchal_have_threadptr;
624b169a6bSchristos   int xchal_have_release_sync;
634b169a6bSchristos   int xchal_have_s32c1i;
644b169a6bSchristos   int xchal_have_booleans;
654b169a6bSchristos   int xchal_have_fp;
664b169a6bSchristos   int xchal_have_fp_div;
674b169a6bSchristos   int xchal_have_fp_recip;
684b169a6bSchristos   int xchal_have_fp_sqrt;
694b169a6bSchristos   int xchal_have_fp_rsqrt;
704b169a6bSchristos   int xchal_have_fp_postinc;
714b169a6bSchristos   int xchal_have_dfp;
724b169a6bSchristos   int xchal_have_dfp_div;
734b169a6bSchristos   int xchal_have_dfp_recip;
744b169a6bSchristos   int xchal_have_dfp_sqrt;
754b169a6bSchristos   int xchal_have_dfp_rsqrt;
764b169a6bSchristos   int xchal_have_windowed;
774b169a6bSchristos   int xchal_num_aregs;
784b169a6bSchristos   int xchal_have_wide_branches;
794b169a6bSchristos   int xchal_have_predicted_branches;
804b169a6bSchristos   int xchal_icache_size;
814b169a6bSchristos   int xchal_dcache_size;
824b169a6bSchristos   int xchal_icache_linesize;
834b169a6bSchristos   int xchal_dcache_linesize;
844b169a6bSchristos   int xchal_icache_linewidth;
854b169a6bSchristos   int xchal_dcache_linewidth;
864b169a6bSchristos   int xchal_dcache_is_writeback;
874b169a6bSchristos   int xchal_have_mmu;
884b169a6bSchristos   int xchal_mmu_min_pte_page_size;
894b169a6bSchristos   int xchal_have_debug;
904b169a6bSchristos   int xchal_num_ibreak;
914b169a6bSchristos   int xchal_num_dbreak;
924b169a6bSchristos   int xchal_debuglevel;
934b169a6bSchristos   int xchal_max_instruction_size;
944b169a6bSchristos   int xchal_inst_fetch_width;
954b169a6bSchristos   int xshal_abi;
964b169a6bSchristos   int xthal_abi_windowed;
974b169a6bSchristos   int xthal_abi_call0;
984b169a6bSchristos };
994b169a6bSchristos 
1004b169a6bSchristos struct xtensa_config_v2
1014b169a6bSchristos {
1024b169a6bSchristos   int xchal_m_stage;
1034b169a6bSchristos   int xtensa_march_latest;
1044b169a6bSchristos   int xtensa_march_earliest;
1054b169a6bSchristos };
1064b169a6bSchristos 
107*e663ba6eSchristos struct xtensa_config_v3
108*e663ba6eSchristos {
109*e663ba6eSchristos   int xchal_have_clamps;
110*e663ba6eSchristos   int xchal_have_depbits;
111*e663ba6eSchristos   int xchal_have_exclusive;
112*e663ba6eSchristos   int xchal_have_xea3;
113*e663ba6eSchristos };
114*e663ba6eSchristos 
115*e663ba6eSchristos struct xtensa_config_v4
116*e663ba6eSchristos {
117*e663ba6eSchristos   int xchal_data_width;
118*e663ba6eSchristos   int xchal_unaligned_load_exception;
119*e663ba6eSchristos   int xchal_unaligned_store_exception;
120*e663ba6eSchristos   int xchal_unaligned_load_hw;
121*e663ba6eSchristos   int xchal_unaligned_store_hw;
122*e663ba6eSchristos };
1234b169a6bSchristos 
1244b169a6bSchristos extern const void *xtensa_load_config (const char *name,
1254b169a6bSchristos 				       const void *no_plugin_def,
1264b169a6bSchristos 				       const void *no_name_def);
1274b169a6bSchristos extern const struct xtensa_config_v1 *xtensa_get_config_v1 (void);
1284b169a6bSchristos extern const struct xtensa_config_v2 *xtensa_get_config_v2 (void);
129*e663ba6eSchristos extern const struct xtensa_config_v3 *xtensa_get_config_v3 (void);
130*e663ba6eSchristos extern const struct xtensa_config_v4 *xtensa_get_config_v4 (void);
1314b169a6bSchristos 
1324b169a6bSchristos #ifdef XTENSA_CONFIG_DEFINITION
1334b169a6bSchristos 
1344b169a6bSchristos #ifndef XCHAL_HAVE_MUL32_HIGH
1354b169a6bSchristos #define XCHAL_HAVE_MUL32_HIGH 0
1364b169a6bSchristos #endif
1374b169a6bSchristos 
1384b169a6bSchristos #ifndef XCHAL_HAVE_RELEASE_SYNC
1394b169a6bSchristos #define XCHAL_HAVE_RELEASE_SYNC 0
1404b169a6bSchristos #endif
1414b169a6bSchristos 
1424b169a6bSchristos #ifndef XCHAL_HAVE_S32C1I
1434b169a6bSchristos #define XCHAL_HAVE_S32C1I 0
1444b169a6bSchristos #endif
1454b169a6bSchristos 
1464b169a6bSchristos #ifndef XCHAL_HAVE_THREADPTR
1474b169a6bSchristos #define XCHAL_HAVE_THREADPTR 0
1484b169a6bSchristos #endif
1494b169a6bSchristos 
1504b169a6bSchristos #ifndef XCHAL_HAVE_FP_POSTINC
1514b169a6bSchristos #define XCHAL_HAVE_FP_POSTINC 0
1524b169a6bSchristos #endif
1534b169a6bSchristos 
1544b169a6bSchristos #ifndef XCHAL_HAVE_DFP
1554b169a6bSchristos #define XCHAL_HAVE_DFP 0
1564b169a6bSchristos #endif
1574b169a6bSchristos 
1584b169a6bSchristos #ifndef XCHAL_HAVE_DFP_DIV
1594b169a6bSchristos #define XCHAL_HAVE_DFP_DIV 0
1604b169a6bSchristos #endif
1614b169a6bSchristos 
1624b169a6bSchristos #ifndef XCHAL_HAVE_DFP_RECIP
1634b169a6bSchristos #define XCHAL_HAVE_DFP_RECIP 0
1644b169a6bSchristos #endif
1654b169a6bSchristos 
1664b169a6bSchristos #ifndef XCHAL_HAVE_DFP_SQRT
1674b169a6bSchristos #define XCHAL_HAVE_DFP_SQRT 0
1684b169a6bSchristos #endif
1694b169a6bSchristos 
1704b169a6bSchristos #ifndef XCHAL_HAVE_DFP_RSQRT
1714b169a6bSchristos #define XCHAL_HAVE_DFP_RSQRT 0
1724b169a6bSchristos #endif
1734b169a6bSchristos 
1744b169a6bSchristos #ifndef XSHAL_HAVE_TEXT_SECTION_LITERALS
1754b169a6bSchristos #define XSHAL_HAVE_TEXT_SECTION_LITERALS 0
1764b169a6bSchristos #endif
1774b169a6bSchristos 
1784b169a6bSchristos #ifndef XCHAL_MMU_MIN_PTE_PAGE_SIZE
1794b169a6bSchristos #define XCHAL_MMU_MIN_PTE_PAGE_SIZE 1
1804b169a6bSchristos #endif
1814b169a6bSchristos 
1824b169a6bSchristos #ifndef XTHAL_ABI_WINDOWED
1834b169a6bSchristos #define XTHAL_ABI_WINDOWED 0
1844b169a6bSchristos #endif
1854b169a6bSchristos 
1864b169a6bSchristos #ifndef XTHAL_ABI_CALL0
1874b169a6bSchristos #define XTHAL_ABI_CALL0 1
1884b169a6bSchristos #endif
1894b169a6bSchristos 
1904b169a6bSchristos #ifndef XCHAL_M_STAGE
1914b169a6bSchristos #define XCHAL_M_STAGE 0
1924b169a6bSchristos #endif
1934b169a6bSchristos 
1944b169a6bSchristos #ifndef XTENSA_MARCH_LATEST
1954b169a6bSchristos #define XTENSA_MARCH_LATEST 0
1964b169a6bSchristos #endif
1974b169a6bSchristos 
1984b169a6bSchristos #ifndef XTENSA_MARCH_EARLIEST
1994b169a6bSchristos #define XTENSA_MARCH_EARLIEST 0
2004b169a6bSchristos #endif
2014b169a6bSchristos 
202*e663ba6eSchristos #ifndef XCHAL_HAVE_CLAMPS
203*e663ba6eSchristos #define XCHAL_HAVE_CLAMPS 0
204*e663ba6eSchristos #endif
205*e663ba6eSchristos 
206*e663ba6eSchristos #ifndef XCHAL_HAVE_DEPBITS
207*e663ba6eSchristos #define XCHAL_HAVE_DEPBITS 0
208*e663ba6eSchristos #endif
209*e663ba6eSchristos 
210*e663ba6eSchristos #ifndef XCHAL_HAVE_EXCLUSIVE
211*e663ba6eSchristos #define XCHAL_HAVE_EXCLUSIVE 0
212*e663ba6eSchristos #endif
213*e663ba6eSchristos 
214*e663ba6eSchristos #ifndef XCHAL_HAVE_XEA3
215*e663ba6eSchristos #define XCHAL_HAVE_XEA3 0
216*e663ba6eSchristos #endif
217*e663ba6eSchristos 
218*e663ba6eSchristos #ifndef XCHAL_DATA_WIDTH
219*e663ba6eSchristos #define XCHAL_DATA_WIDTH 16
220*e663ba6eSchristos #endif
221*e663ba6eSchristos 
222*e663ba6eSchristos #ifndef XCHAL_UNALIGNED_LOAD_EXCEPTION
223*e663ba6eSchristos #define XCHAL_UNALIGNED_LOAD_EXCEPTION 1
224*e663ba6eSchristos #endif
225*e663ba6eSchristos 
226*e663ba6eSchristos #ifndef XCHAL_UNALIGNED_STORE_EXCEPTION
227*e663ba6eSchristos #define XCHAL_UNALIGNED_STORE_EXCEPTION 1
228*e663ba6eSchristos #endif
229*e663ba6eSchristos 
230*e663ba6eSchristos #ifndef XCHAL_UNALIGNED_LOAD_HW
231*e663ba6eSchristos #define XCHAL_UNALIGNED_LOAD_HW 0
232*e663ba6eSchristos #endif
233*e663ba6eSchristos 
234*e663ba6eSchristos #ifndef XCHAL_UNALIGNED_STORE_HW
235*e663ba6eSchristos #define XCHAL_UNALIGNED_STORE_HW 0
236*e663ba6eSchristos #endif
237*e663ba6eSchristos 
2384b169a6bSchristos #define XTENSA_CONFIG_ENTRY(a) a
2394b169a6bSchristos 
2404b169a6bSchristos #define XTENSA_CONFIG_V1_ENTRY_LIST \
2414b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_BE), \
2424b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DENSITY), \
2434b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_CONST16), \
2444b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_ABS), \
2454b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_ADDX), \
2464b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_L32R), \
2474b169a6bSchristos     XTENSA_CONFIG_ENTRY(XSHAL_USE_ABSOLUTE_LITERALS), \
2484b169a6bSchristos     XTENSA_CONFIG_ENTRY(XSHAL_HAVE_TEXT_SECTION_LITERALS), \
2494b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_MAC16), \
2504b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_MUL16), \
2514b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_MUL32), \
2524b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_MUL32_HIGH), \
2534b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DIV32), \
2544b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_NSA), \
2554b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_MINMAX), \
2564b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_SEXT), \
2574b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_LOOPS), \
2584b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_THREADPTR), \
2594b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_RELEASE_SYNC), \
2604b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_S32C1I), \
2614b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_BOOLEANS), \
2624b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_FP), \
2634b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_FP_DIV), \
2644b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_FP_RECIP), \
2654b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_FP_SQRT), \
2664b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_FP_RSQRT), \
2674b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_FP_POSTINC), \
2684b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DFP), \
2694b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DFP_DIV), \
2704b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DFP_RECIP), \
2714b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DFP_SQRT), \
2724b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DFP_RSQRT), \
2734b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_WINDOWED), \
2744b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_NUM_AREGS), \
2754b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_WIDE_BRANCHES), \
2764b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_PREDICTED_BRANCHES), \
2774b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_ICACHE_SIZE), \
2784b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_DCACHE_SIZE), \
2794b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_ICACHE_LINESIZE), \
2804b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_DCACHE_LINESIZE), \
2814b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_ICACHE_LINEWIDTH), \
2824b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_DCACHE_LINEWIDTH), \
2834b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_DCACHE_IS_WRITEBACK), \
2844b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_MMU), \
2854b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_MMU_MIN_PTE_PAGE_SIZE), \
2864b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DEBUG), \
2874b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_NUM_IBREAK), \
2884b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_NUM_DBREAK), \
2894b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_DEBUGLEVEL), \
2904b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_MAX_INSTRUCTION_SIZE), \
2914b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_INST_FETCH_WIDTH), \
2924b169a6bSchristos     XTENSA_CONFIG_ENTRY(XSHAL_ABI), \
2934b169a6bSchristos     XTENSA_CONFIG_ENTRY(XTHAL_ABI_WINDOWED), \
2944b169a6bSchristos     XTENSA_CONFIG_ENTRY(XTHAL_ABI_CALL0)
2954b169a6bSchristos 
2964b169a6bSchristos #define XTENSA_CONFIG_V2_ENTRY_LIST \
2974b169a6bSchristos     XTENSA_CONFIG_ENTRY(XCHAL_M_STAGE), \
2984b169a6bSchristos     XTENSA_CONFIG_ENTRY(XTENSA_MARCH_LATEST), \
2994b169a6bSchristos     XTENSA_CONFIG_ENTRY(XTENSA_MARCH_EARLIEST)
3004b169a6bSchristos 
301*e663ba6eSchristos #define XTENSA_CONFIG_V3_ENTRY_LIST \
302*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_CLAMPS), \
303*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_DEPBITS), \
304*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_EXCLUSIVE), \
305*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_HAVE_XEA3)
306*e663ba6eSchristos 
307*e663ba6eSchristos #define XTENSA_CONFIG_V4_ENTRY_LIST \
308*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_DATA_WIDTH), \
309*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_UNALIGNED_LOAD_EXCEPTION), \
310*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_UNALIGNED_STORE_EXCEPTION), \
311*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_UNALIGNED_LOAD_HW), \
312*e663ba6eSchristos     XTENSA_CONFIG_ENTRY(XCHAL_UNALIGNED_STORE_HW)
313*e663ba6eSchristos 
3144b169a6bSchristos #define XTENSA_CONFIG_INSTANCE_LIST \
3154b169a6bSchristos const struct xtensa_config_v1 xtensa_config_v1 = { \
3164b169a6bSchristos     XTENSA_CONFIG_V1_ENTRY_LIST, \
3174b169a6bSchristos }; \
3184b169a6bSchristos const struct xtensa_config_v2 xtensa_config_v2 = { \
3194b169a6bSchristos     XTENSA_CONFIG_V2_ENTRY_LIST, \
320*e663ba6eSchristos }; \
321*e663ba6eSchristos const struct xtensa_config_v3 xtensa_config_v3 = { \
322*e663ba6eSchristos     XTENSA_CONFIG_V3_ENTRY_LIST, \
323*e663ba6eSchristos }; \
324*e663ba6eSchristos const struct xtensa_config_v4 xtensa_config_v4 = { \
325*e663ba6eSchristos     XTENSA_CONFIG_V4_ENTRY_LIST, \
3264b169a6bSchristos }
3274b169a6bSchristos 
3284b169a6bSchristos #define XTENSA_CONFIG_ENTRY_LIST \
3294b169a6bSchristos     XTENSA_CONFIG_V1_ENTRY_LIST, \
330*e663ba6eSchristos     XTENSA_CONFIG_V2_ENTRY_LIST, \
331*e663ba6eSchristos     XTENSA_CONFIG_V3_ENTRY_LIST, \
332*e663ba6eSchristos     XTENSA_CONFIG_V4_ENTRY_LIST
3334b169a6bSchristos 
3344b169a6bSchristos #else /* XTENSA_CONFIG_DEFINITION */
3354b169a6bSchristos 
3364b169a6bSchristos #undef XCHAL_HAVE_BE
3374b169a6bSchristos #define XCHAL_HAVE_BE			(xtensa_get_config_v1 ()->xchal_have_be)
3384b169a6bSchristos 
3394b169a6bSchristos #undef XCHAL_HAVE_DENSITY
3404b169a6bSchristos #define XCHAL_HAVE_DENSITY		(xtensa_get_config_v1 ()->xchal_have_density)
3414b169a6bSchristos 
3424b169a6bSchristos #undef XCHAL_HAVE_CONST16
3434b169a6bSchristos #define XCHAL_HAVE_CONST16		(xtensa_get_config_v1 ()->xchal_have_const16)
3444b169a6bSchristos 
3454b169a6bSchristos #undef XCHAL_HAVE_ABS
3464b169a6bSchristos #define XCHAL_HAVE_ABS			(xtensa_get_config_v1 ()->xchal_have_abs)
3474b169a6bSchristos 
3484b169a6bSchristos #undef XCHAL_HAVE_ADDX
3494b169a6bSchristos #define XCHAL_HAVE_ADDX			(xtensa_get_config_v1 ()->xchal_have_addx)
3504b169a6bSchristos 
3514b169a6bSchristos #undef XCHAL_HAVE_L32R
3524b169a6bSchristos #define XCHAL_HAVE_L32R			(xtensa_get_config_v1 ()->xchal_have_l32r)
3534b169a6bSchristos 
3544b169a6bSchristos #undef XSHAL_USE_ABSOLUTE_LITERALS
3554b169a6bSchristos #define XSHAL_USE_ABSOLUTE_LITERALS	(xtensa_get_config_v1 ()->xshal_use_absolute_literals)
3564b169a6bSchristos 
3574b169a6bSchristos #undef XSHAL_HAVE_TEXT_SECTION_LITERALS
3584b169a6bSchristos #define XSHAL_HAVE_TEXT_SECTION_LITERALS (xtensa_get_config_v1 ()->xshal_have_text_section_literals)
3594b169a6bSchristos 
3604b169a6bSchristos #undef XCHAL_HAVE_MAC16
3614b169a6bSchristos #define XCHAL_HAVE_MAC16		(xtensa_get_config_v1 ()->xchal_have_mac16)
3624b169a6bSchristos 
3634b169a6bSchristos #undef XCHAL_HAVE_MUL16
3644b169a6bSchristos #define XCHAL_HAVE_MUL16		(xtensa_get_config_v1 ()->xchal_have_mul16)
3654b169a6bSchristos 
3664b169a6bSchristos #undef XCHAL_HAVE_MUL32
3674b169a6bSchristos #define XCHAL_HAVE_MUL32		(xtensa_get_config_v1 ()->xchal_have_mul32)
3684b169a6bSchristos 
3694b169a6bSchristos #undef XCHAL_HAVE_MUL32_HIGH
3704b169a6bSchristos #define XCHAL_HAVE_MUL32_HIGH		(xtensa_get_config_v1 ()->xchal_have_mul32_high)
3714b169a6bSchristos 
3724b169a6bSchristos #undef XCHAL_HAVE_DIV32
3734b169a6bSchristos #define XCHAL_HAVE_DIV32		(xtensa_get_config_v1 ()->xchal_have_div32)
3744b169a6bSchristos 
3754b169a6bSchristos #undef XCHAL_HAVE_NSA
3764b169a6bSchristos #define XCHAL_HAVE_NSA			(xtensa_get_config_v1 ()->xchal_have_nsa)
3774b169a6bSchristos 
3784b169a6bSchristos #undef XCHAL_HAVE_MINMAX
3794b169a6bSchristos #define XCHAL_HAVE_MINMAX		(xtensa_get_config_v1 ()->xchal_have_minmax)
3804b169a6bSchristos 
3814b169a6bSchristos #undef XCHAL_HAVE_SEXT
3824b169a6bSchristos #define XCHAL_HAVE_SEXT			(xtensa_get_config_v1 ()->xchal_have_sext)
3834b169a6bSchristos 
3844b169a6bSchristos #undef XCHAL_HAVE_LOOPS
3854b169a6bSchristos #define XCHAL_HAVE_LOOPS		(xtensa_get_config_v1 ()->xchal_have_loops)
3864b169a6bSchristos 
3874b169a6bSchristos #undef XCHAL_HAVE_THREADPTR
3884b169a6bSchristos #define XCHAL_HAVE_THREADPTR		(xtensa_get_config_v1 ()->xchal_have_threadptr)
3894b169a6bSchristos 
3904b169a6bSchristos #undef XCHAL_HAVE_RELEASE_SYNC
3914b169a6bSchristos #define XCHAL_HAVE_RELEASE_SYNC		(xtensa_get_config_v1 ()->xchal_have_release_sync)
3924b169a6bSchristos 
3934b169a6bSchristos #undef XCHAL_HAVE_S32C1I
3944b169a6bSchristos #define XCHAL_HAVE_S32C1I		(xtensa_get_config_v1 ()->xchal_have_s32c1i)
3954b169a6bSchristos 
3964b169a6bSchristos #undef XCHAL_HAVE_BOOLEANS
3974b169a6bSchristos #define XCHAL_HAVE_BOOLEANS		(xtensa_get_config_v1 ()->xchal_have_booleans)
3984b169a6bSchristos 
3994b169a6bSchristos #undef XCHAL_HAVE_FP
4004b169a6bSchristos #define XCHAL_HAVE_FP			(xtensa_get_config_v1 ()->xchal_have_fp)
4014b169a6bSchristos 
4024b169a6bSchristos #undef XCHAL_HAVE_FP_DIV
4034b169a6bSchristos #define XCHAL_HAVE_FP_DIV		(xtensa_get_config_v1 ()->xchal_have_fp_div)
4044b169a6bSchristos 
4054b169a6bSchristos #undef XCHAL_HAVE_FP_RECIP
4064b169a6bSchristos #define XCHAL_HAVE_FP_RECIP		(xtensa_get_config_v1 ()->xchal_have_fp_recip)
4074b169a6bSchristos 
4084b169a6bSchristos #undef XCHAL_HAVE_FP_SQRT
4094b169a6bSchristos #define XCHAL_HAVE_FP_SQRT		(xtensa_get_config_v1 ()->xchal_have_fp_sqrt)
4104b169a6bSchristos 
4114b169a6bSchristos #undef XCHAL_HAVE_FP_RSQRT
4124b169a6bSchristos #define XCHAL_HAVE_FP_RSQRT		(xtensa_get_config_v1 ()->xchal_have_fp_rsqrt)
4134b169a6bSchristos 
4144b169a6bSchristos #undef XCHAL_HAVE_FP_POSTINC
4154b169a6bSchristos #define XCHAL_HAVE_FP_POSTINC		(xtensa_get_config_v1 ()->xchal_have_fp_postinc)
4164b169a6bSchristos 
4174b169a6bSchristos #undef XCHAL_HAVE_DFP
4184b169a6bSchristos #define XCHAL_HAVE_DFP			(xtensa_get_config_v1 ()->xchal_have_dfp)
4194b169a6bSchristos 
4204b169a6bSchristos #undef XCHAL_HAVE_DFP_DIV
4214b169a6bSchristos #define XCHAL_HAVE_DFP_DIV		(xtensa_get_config_v1 ()->xchal_have_dfp_div)
4224b169a6bSchristos 
4234b169a6bSchristos #undef XCHAL_HAVE_DFP_RECIP
4244b169a6bSchristos #define XCHAL_HAVE_DFP_RECIP		(xtensa_get_config_v1 ()->xchal_have_dfp_recip)
4254b169a6bSchristos 
4264b169a6bSchristos #undef XCHAL_HAVE_DFP_SQRT
4274b169a6bSchristos #define XCHAL_HAVE_DFP_SQRT		(xtensa_get_config_v1 ()->xchal_have_dfp_sqrt)
4284b169a6bSchristos 
4294b169a6bSchristos #undef XCHAL_HAVE_DFP_RSQRT
4304b169a6bSchristos #define XCHAL_HAVE_DFP_RSQRT		(xtensa_get_config_v1 ()->xchal_have_dfp_rsqrt)
4314b169a6bSchristos 
4324b169a6bSchristos #undef XCHAL_HAVE_WINDOWED
4334b169a6bSchristos #define XCHAL_HAVE_WINDOWED		(xtensa_get_config_v1 ()->xchal_have_windowed)
4344b169a6bSchristos 
4354b169a6bSchristos #undef XCHAL_NUM_AREGS
4364b169a6bSchristos #define XCHAL_NUM_AREGS			(xtensa_get_config_v1 ()->xchal_num_aregs)
4374b169a6bSchristos 
4384b169a6bSchristos #undef XCHAL_HAVE_WIDE_BRANCHES
4394b169a6bSchristos #define XCHAL_HAVE_WIDE_BRANCHES	(xtensa_get_config_v1 ()->xchal_have_wide_branches)
4404b169a6bSchristos 
4414b169a6bSchristos #undef XCHAL_HAVE_PREDICTED_BRANCHES
4424b169a6bSchristos #define XCHAL_HAVE_PREDICTED_BRANCHES	(xtensa_get_config_v1 ()->xchal_have_predicted_branches)
4434b169a6bSchristos 
4444b169a6bSchristos 
4454b169a6bSchristos #undef XCHAL_ICACHE_SIZE
4464b169a6bSchristos #define XCHAL_ICACHE_SIZE		(xtensa_get_config_v1 ()->xchal_icache_size)
4474b169a6bSchristos 
4484b169a6bSchristos #undef XCHAL_DCACHE_SIZE
4494b169a6bSchristos #define XCHAL_DCACHE_SIZE		(xtensa_get_config_v1 ()->xchal_dcache_size)
4504b169a6bSchristos 
4514b169a6bSchristos #undef XCHAL_ICACHE_LINESIZE
4524b169a6bSchristos #define XCHAL_ICACHE_LINESIZE		(xtensa_get_config_v1 ()->xchal_icache_linesize)
4534b169a6bSchristos 
4544b169a6bSchristos #undef XCHAL_DCACHE_LINESIZE
4554b169a6bSchristos #define XCHAL_DCACHE_LINESIZE		(xtensa_get_config_v1 ()->xchal_dcache_linesize)
4564b169a6bSchristos 
4574b169a6bSchristos #undef XCHAL_ICACHE_LINEWIDTH
4584b169a6bSchristos #define XCHAL_ICACHE_LINEWIDTH		(xtensa_get_config_v1 ()->xchal_icache_linewidth)
4594b169a6bSchristos 
4604b169a6bSchristos #undef XCHAL_DCACHE_LINEWIDTH
4614b169a6bSchristos #define XCHAL_DCACHE_LINEWIDTH		(xtensa_get_config_v1 ()->xchal_dcache_linewidth)
4624b169a6bSchristos 
4634b169a6bSchristos #undef XCHAL_DCACHE_IS_WRITEBACK
4644b169a6bSchristos #define XCHAL_DCACHE_IS_WRITEBACK	(xtensa_get_config_v1 ()->xchal_dcache_is_writeback)
4654b169a6bSchristos 
4664b169a6bSchristos 
4674b169a6bSchristos #undef XCHAL_HAVE_MMU
4684b169a6bSchristos #define XCHAL_HAVE_MMU			(xtensa_get_config_v1 ()->xchal_have_mmu)
4694b169a6bSchristos 
4704b169a6bSchristos #undef XCHAL_MMU_MIN_PTE_PAGE_SIZE
4714b169a6bSchristos #define XCHAL_MMU_MIN_PTE_PAGE_SIZE	(xtensa_get_config_v1 ()->xchal_mmu_min_pte_page_size)
4724b169a6bSchristos 
4734b169a6bSchristos 
4744b169a6bSchristos #undef XCHAL_HAVE_DEBUG
4754b169a6bSchristos #define XCHAL_HAVE_DEBUG		(xtensa_get_config_v1 ()->xchal_have_debug)
4764b169a6bSchristos 
4774b169a6bSchristos #undef XCHAL_NUM_IBREAK
4784b169a6bSchristos #define XCHAL_NUM_IBREAK		(xtensa_get_config_v1 ()->xchal_num_ibreak)
4794b169a6bSchristos 
4804b169a6bSchristos #undef XCHAL_NUM_DBREAK
4814b169a6bSchristos #define XCHAL_NUM_DBREAK		(xtensa_get_config_v1 ()->xchal_num_dbreak)
4824b169a6bSchristos 
4834b169a6bSchristos #undef XCHAL_DEBUGLEVEL
4844b169a6bSchristos #define XCHAL_DEBUGLEVEL		(xtensa_get_config_v1 ()->xchal_debuglevel)
4854b169a6bSchristos 
4864b169a6bSchristos 
4874b169a6bSchristos #undef XCHAL_MAX_INSTRUCTION_SIZE
4884b169a6bSchristos #define XCHAL_MAX_INSTRUCTION_SIZE	(xtensa_get_config_v1 ()->xchal_max_instruction_size)
4894b169a6bSchristos 
4904b169a6bSchristos #undef XCHAL_INST_FETCH_WIDTH
4914b169a6bSchristos #define XCHAL_INST_FETCH_WIDTH		(xtensa_get_config_v1 ()->xchal_inst_fetch_width)
4924b169a6bSchristos 
4934b169a6bSchristos 
4944b169a6bSchristos #undef XSHAL_ABI
4954b169a6bSchristos #undef XTHAL_ABI_WINDOWED
4964b169a6bSchristos #undef XTHAL_ABI_CALL0
4974b169a6bSchristos #define XSHAL_ABI			(xtensa_get_config_v1 ()->xshal_abi)
4984b169a6bSchristos #define XTHAL_ABI_WINDOWED		(xtensa_get_config_v1 ()->xthal_abi_windowed)
4994b169a6bSchristos #define XTHAL_ABI_CALL0			(xtensa_get_config_v1 ()->xthal_abi_call0)
5004b169a6bSchristos 
5014b169a6bSchristos 
5024b169a6bSchristos #undef XCHAL_M_STAGE
5034b169a6bSchristos #define XCHAL_M_STAGE			(xtensa_get_config_v2 ()->xchal_m_stage)
5044b169a6bSchristos 
5054b169a6bSchristos #undef XTENSA_MARCH_LATEST
5064b169a6bSchristos #define XTENSA_MARCH_LATEST		(xtensa_get_config_v2 ()->xtensa_march_latest)
5074b169a6bSchristos 
5084b169a6bSchristos #undef XTENSA_MARCH_EARLIEST
5094b169a6bSchristos #define XTENSA_MARCH_EARLIEST		(xtensa_get_config_v2 ()->xtensa_march_earliest)
5104b169a6bSchristos 
511*e663ba6eSchristos 
512*e663ba6eSchristos #undef XCHAL_HAVE_CLAMPS
513*e663ba6eSchristos #define XCHAL_HAVE_CLAMPS		(xtensa_get_config_v3 ()->xchal_have_clamps)
514*e663ba6eSchristos 
515*e663ba6eSchristos #undef XCHAL_HAVE_DEPBITS
516*e663ba6eSchristos #define XCHAL_HAVE_DEPBITS		(xtensa_get_config_v3 ()->xchal_have_depbits)
517*e663ba6eSchristos 
518*e663ba6eSchristos #undef XCHAL_HAVE_EXCLUSIVE
519*e663ba6eSchristos #define XCHAL_HAVE_EXCLUSIVE		(xtensa_get_config_v3 ()->xchal_have_exclusive)
520*e663ba6eSchristos 
521*e663ba6eSchristos #undef XCHAL_HAVE_XEA3
522*e663ba6eSchristos #define XCHAL_HAVE_XEA3			(xtensa_get_config_v3 ()->xchal_have_xea3)
523*e663ba6eSchristos 
524*e663ba6eSchristos 
525*e663ba6eSchristos #undef XCHAL_DATA_WIDTH
526*e663ba6eSchristos #define XCHAL_DATA_WIDTH		(xtensa_get_config_v4 ()->xchal_data_width)
527*e663ba6eSchristos 
528*e663ba6eSchristos #undef XCHAL_UNALIGNED_LOAD_EXCEPTION
529*e663ba6eSchristos #define XCHAL_UNALIGNED_LOAD_EXCEPTION	(xtensa_get_config_v4 ()->xchal_unaligned_load_exception)
530*e663ba6eSchristos 
531*e663ba6eSchristos #undef XCHAL_UNALIGNED_STORE_EXCEPTION
532*e663ba6eSchristos #define XCHAL_UNALIGNED_STORE_EXCEPTION	(xtensa_get_config_v4 ()->xchal_unaligned_store_exception)
533*e663ba6eSchristos 
534*e663ba6eSchristos #undef XCHAL_UNALIGNED_LOAD_HW
535*e663ba6eSchristos #define XCHAL_UNALIGNED_LOAD_HW		(xtensa_get_config_v4 ()->xchal_unaligned_load_hw)
536*e663ba6eSchristos 
537*e663ba6eSchristos #undef XCHAL_UNALIGNED_STORE_HW
538*e663ba6eSchristos #define XCHAL_UNALIGNED_STORE_HW	(xtensa_get_config_v4 ()->xchal_unaligned_store_hw)
539*e663ba6eSchristos 
5404b169a6bSchristos #endif /* XTENSA_CONFIG_DEFINITION */
5414b169a6bSchristos 
5424b169a6bSchristos #ifdef __cplusplus
5434b169a6bSchristos }
5444b169a6bSchristos #endif
5454b169a6bSchristos #endif /* !XTENSA_DYNCONFIG_H */
546