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