1 /* 2 * xtensa/config/core-isa.h -- minimum required HAL definitions that are 3 * dependent on Xtensa processor CORE configuration 4 * 5 * See <xtensa/config/core.h>, which includes this file, for more details. 6 */ 7 8 /* Xtensa processor core configuration information. 9 10 Copyright (c) 1999-2023 Tensilica Inc. 11 12 Permission is hereby granted, free of charge, to any person obtaining 13 a copy of this software and associated documentation files (the 14 "Software"), to deal in the Software without restriction, including 15 without limitation the rights to use, copy, modify, merge, publish, 16 distribute, sublicense, and/or sell copies of the Software, and to 17 permit persons to whom the Software is furnished to do so, subject to 18 the following conditions: 19 20 The above copyright notice and this permission notice shall be included 21 in all copies or substantial portions of the Software. 22 23 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 26 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 27 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 28 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 29 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 30 31 #ifndef _XTENSA_CORE_CONFIGURATION_H 32 #define _XTENSA_CORE_CONFIGURATION_H 33 34 #if defined(_LIBC) || defined(_LIBM) || defined(_LIBGLOSS) 35 36 /* Macros used to build newlib and libgloss */ 37 38 #undef XCHAL_HAVE_BE 39 #ifdef __XCHAL_HAVE_BE 40 #define XCHAL_HAVE_BE __XCHAL_HAVE_BE 41 #else 42 #define XCHAL_HAVE_BE 0 /* big-endian byte ordering */ 43 #endif 44 45 #undef XCHAL_HAVE_WINDOWED 46 #ifdef __XCHAL_HAVE_WINDOWED 47 #define XCHAL_HAVE_WINDOWED __XCHAL_HAVE_WINDOWED 48 #else 49 #define XCHAL_HAVE_WINDOWED 1 /* windowed registers option */ 50 #endif 51 52 #undef XCHAL_NUM_AREGS 53 #ifdef __XCHAL_NUM_AREGS 54 #define XCHAL_NUM_AREGS __XCHAL_NUM_AREGS 55 #else 56 #define XCHAL_NUM_AREGS 64 /* num of physical addr regs */ 57 #endif 58 59 #undef XCHAL_HAVE_DENSITY 60 #ifdef __XCHAL_HAVE_DENSITY 61 #define XCHAL_HAVE_DENSITY __XCHAL_HAVE_DENSITY 62 #else 63 #define XCHAL_HAVE_DENSITY 1 /* 16-bit instructions */ 64 #endif 65 66 #undef XCHAL_HAVE_LOOPS 67 #ifdef __XCHAL_HAVE_LOOPS 68 #define XCHAL_HAVE_LOOPS __XCHAL_HAVE_LOOPS 69 #else 70 #define XCHAL_HAVE_LOOPS 1 /* zero-overhead loops */ 71 #endif 72 73 #undef XCHAL_HAVE_L32R 74 #ifdef __XCHAL_HAVE_L32R 75 #define XCHAL_HAVE_L32R __XCHAL_HAVE_L32R 76 #else 77 #define XCHAL_HAVE_L32R 1 /* L32R instruction */ 78 #endif 79 80 #undef XCHAL_HAVE_FP 81 #ifdef __XCHAL_HAVE_FP 82 #define XCHAL_HAVE_FP __XCHAL_HAVE_FP 83 #else 84 #define XCHAL_HAVE_FP 1 /* single prec floating point */ 85 #endif 86 87 #undef XCHAL_HAVE_FP_SQRT 88 #ifdef __XCHAL_HAVE_FP_SQRT 89 #define XCHAL_HAVE_FP_SQRT __XCHAL_HAVE_FP_SQRT 90 #else 91 #define XCHAL_HAVE_FP_SQRT 1 /* FP with SQRT instructions */ 92 #endif 93 94 #undef XCHAL_HAVE_DFP 95 #ifdef __XCHAL_HAVE_DFP 96 #define XCHAL_HAVE_DFP __XCHAL_HAVE_DFP 97 #else 98 #define XCHAL_HAVE_DFP 0 /* double precision FP pkg */ 99 #endif 100 101 #undef XCHAL_INST_FETCH_WIDTH 102 #ifdef __XCHAL_INST_FETCH_WIDTH 103 #define XCHAL_INST_FETCH_WIDTH __XCHAL_INST_FETCH_WIDTH 104 #else 105 #define XCHAL_INST_FETCH_WIDTH 4 /* instr-fetch width in bytes */ 106 #endif 107 108 #else /* defined(_LIBC) || defined(_LIBM) || defined(_LIBGLOSS) */ 109 110 /* Expect that core-isa.h exists in OS/baremetal port */ 111 #include_next <xtensa/config/core-isa.h> 112 113 #endif /* defined(_LIBC) || defined(_LIBM) || defined(_LIBGLOSS) */ 114 115 #endif /* _XTENSA_CORE_CONFIGURATION_H */ 116