mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-27 12:11:41 +01:00 
			
		
		
		
	
		
			
	
	
		
			275 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			275 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /* 
 | ||
|  |  * xtensa/config/system.h -- HAL definitions that are dependent on SYSTEM configuration | ||
|  |  * | ||
|  |  *  NOTE: The location and contents of this file are highly subject to change. | ||
|  |  * | ||
|  |  *  Source for configuration-independent binaries (which link in a | ||
|  |  *  configuration-specific HAL library) must NEVER include this file. | ||
|  |  *  The HAL itself has historically included this file in some instances, | ||
|  |  *  but this is not appropriate either, because the HAL is meant to be | ||
|  |  *  core-specific but system independent. | ||
|  |  */ | ||
|  | 
 | ||
|  | /* Customer ID=11657; Build=0x5fe96; Copyright (c) 2000-2010 Tensilica Inc.
 | ||
|  | 
 | ||
|  |    Permission is hereby granted, free of charge, to any person obtaining | ||
|  |    a copy of this software and associated documentation files (the | ||
|  |    "Software"), to deal in the Software without restriction, including | ||
|  |    without limitation the rights to use, copy, modify, merge, publish, | ||
|  |    distribute, sublicense, and/or sell copies of the Software, and to | ||
|  |    permit persons to whom the Software is furnished to do so, subject to | ||
|  |    the following conditions: | ||
|  | 
 | ||
|  |    The above copyright notice and this permission notice shall be included | ||
|  |    in all copies or substantial portions of the Software. | ||
|  | 
 | ||
|  |    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
|  |    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
|  |    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
|  |    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||
|  |    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||
|  |    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
|  |    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */ | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifndef XTENSA_CONFIG_SYSTEM_H
 | ||
|  | #define XTENSA_CONFIG_SYSTEM_H
 | ||
|  | 
 | ||
|  | /*#include <xtensa/hal.h>*/ | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 				CONFIGURED SOFTWARE OPTIONS | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | #define XSHAL_USE_ABSOLUTE_LITERALS	0	/* (sw-only option, whether software uses absolute literals) */
 | ||
|  | #define XSHAL_HAVE_TEXT_SECTION_LITERALS 1 /* Set if there is some memory that allows both code and literals.  */
 | ||
|  | 
 | ||
|  | #define XSHAL_ABI			XTHAL_ABI_WINDOWED	/* (sw-only option, selected ABI) */
 | ||
|  | /*  The above maps to one of the following constants:  */ | ||
|  | #define XTHAL_ABI_WINDOWED		0
 | ||
|  | #define XTHAL_ABI_CALL0			1
 | ||
|  | /*  Alternatives:  */ | ||
|  | /*#define XSHAL_WINDOWED_ABI		1*/	/* set if windowed ABI selected */ | ||
|  | /*#define XSHAL_CALL0_ABI		0*/	/* set if call0 ABI selected */ | ||
|  | 
 | ||
|  | #define XSHAL_CLIB			XTHAL_CLIB_NEWLIB	/* (sw-only option, selected C library) */
 | ||
|  | /*  The above maps to one of the following constants:  */ | ||
|  | #define XTHAL_CLIB_NEWLIB		0
 | ||
|  | #define XTHAL_CLIB_UCLIBC		1
 | ||
|  | #define XTHAL_CLIB_XCLIB		2
 | ||
|  | /*  Alternatives:  */ | ||
|  | /*#define XSHAL_NEWLIB			1*/	/* set if newlib C library selected */ | ||
|  | /*#define XSHAL_UCLIBC			0*/	/* set if uCLibC C library selected */ | ||
|  | /*#define XSHAL_XCLIB			0*/	/* set if Xtensa C library selected */ | ||
|  | 
 | ||
|  | #define XSHAL_USE_FLOATING_POINT	1
 | ||
|  | 
 | ||
|  | #define XSHAL_FLOATING_POINT_ABI	0
 | ||
|  | 
 | ||
|  | /*  SW workarounds enabled for HW errata:  */ | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 				DEVICE ADDRESSES | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*
 | ||
|  |  *  Strange place to find these, but the configuration GUI | ||
|  |  *  allows moving these around to account for various core | ||
|  |  *  configurations.  Specific boards (and their BSP software) | ||
|  |  *  will have specific meanings for these components. | ||
|  |  */ | ||
|  | 
 | ||
|  | /*  I/O Block areas:  */ | ||
|  | #define XSHAL_IOBLOCK_CACHED_VADDR	0x70000000
 | ||
|  | #define XSHAL_IOBLOCK_CACHED_PADDR	0x70000000
 | ||
|  | #define XSHAL_IOBLOCK_CACHED_SIZE	0x0E000000
 | ||
|  | 
 | ||
|  | #define XSHAL_IOBLOCK_BYPASS_VADDR	0x90000000
 | ||
|  | #define XSHAL_IOBLOCK_BYPASS_PADDR	0x90000000
 | ||
|  | #define XSHAL_IOBLOCK_BYPASS_SIZE	0x0E000000
 | ||
|  | 
 | ||
|  | /*  System ROM:  */ | ||
|  | #define XSHAL_ROM_VADDR		0x50000000
 | ||
|  | #define XSHAL_ROM_PADDR		0x50000000
 | ||
|  | #define XSHAL_ROM_SIZE		0x01000000
 | ||
|  | /*  Largest available area (free of vectors):  */ | ||
|  | #define XSHAL_ROM_AVAIL_VADDR	0x50000000
 | ||
|  | #define XSHAL_ROM_AVAIL_VSIZE	0x01000000
 | ||
|  | 
 | ||
|  | /*  System RAM:  */ | ||
|  | #define XSHAL_RAM_VADDR		0x60000000
 | ||
|  | #define XSHAL_RAM_PADDR		0x60000000
 | ||
|  | #define XSHAL_RAM_VSIZE		0x20000000
 | ||
|  | #define XSHAL_RAM_PSIZE		0x20000000
 | ||
|  | #define XSHAL_RAM_SIZE		XSHAL_RAM_PSIZE
 | ||
|  | /*  Largest available area (free of vectors):  */ | ||
|  | #define XSHAL_RAM_AVAIL_VADDR	0x60000000
 | ||
|  | #define XSHAL_RAM_AVAIL_VSIZE	0x20000000
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  *  Shadow system RAM (same device as system RAM, at different address). | ||
|  |  *  (Emulation boards need this for the SONIC Ethernet driver | ||
|  |  *   when data caches are configured for writeback mode.) | ||
|  |  *  NOTE: on full MMU configs, this points to the BYPASS virtual address | ||
|  |  *  of system RAM, ie. is the same as XSHAL_RAM_* except that virtual | ||
|  |  *  addresses are viewed through the BYPASS static map rather than | ||
|  |  *  the CACHED static map. | ||
|  |  */ | ||
|  | #define XSHAL_RAM_BYPASS_VADDR		0xA0000000
 | ||
|  | #define XSHAL_RAM_BYPASS_PADDR		0xA0000000
 | ||
|  | #define XSHAL_RAM_BYPASS_PSIZE		0x20000000
 | ||
|  | 
 | ||
|  | /*  Alternate system RAM (different device than system RAM):  */ | ||
|  | /*#define XSHAL_ALTRAM_[VP]ADDR		...not configured...*/ | ||
|  | /*#define XSHAL_ALTRAM_SIZE		...not configured...*/ | ||
|  | 
 | ||
|  | /*  Some available location in which to place devices in a simulation (eg. XTMP):  */ | ||
|  | #define XSHAL_SIMIO_CACHED_VADDR	0xC0000000
 | ||
|  | #define XSHAL_SIMIO_BYPASS_VADDR	0xC0000000
 | ||
|  | #define XSHAL_SIMIO_PADDR		0xC0000000
 | ||
|  | #define XSHAL_SIMIO_SIZE		0x20000000
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  |  *  For use by reference testbench exit and diagnostic routines. | ||
|  |  */ | ||
|  | #define XSHAL_MAGIC_EXIT		0x0
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  |  *			DEVICE-ADDRESS DEPENDENT... | ||
|  |  * | ||
|  |  *  Values written to CACHEATTR special register (or its equivalent) | ||
|  |  *  to enable and disable caches in various modes. | ||
|  |  *----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 			BACKWARD COMPATIBILITY ... | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*
 | ||
|  |  *  NOTE:  the following two macros are DEPRECATED.  Use the latter | ||
|  |  *  board-specific macros instead, which are specially tuned for the | ||
|  |  *  particular target environments' memory maps. | ||
|  |  */ | ||
|  | #define XSHAL_CACHEATTR_BYPASS		XSHAL_XT2000_CACHEATTR_BYPASS	/* disable caches in bypass mode */
 | ||
|  | #define XSHAL_CACHEATTR_DEFAULT		XSHAL_XT2000_CACHEATTR_DEFAULT	/* default setting to enable caches (no writeback!) */
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 				GENERIC | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*  For the following, a 512MB region is used if it contains a system (PIF) RAM,
 | ||
|  |  *  system (PIF) ROM, local memory, or XLMI.  */ | ||
|  | 
 | ||
|  | /*  These set any unused 512MB region to cache-BYPASS attribute:  */ | ||
|  | #define XSHAL_ALLVALID_CACHEATTR_WRITEBACK	0x22221112	/* enable caches in write-back mode */
 | ||
|  | #define XSHAL_ALLVALID_CACHEATTR_WRITEALLOC	0x22221112	/* enable caches in write-allocate mode */
 | ||
|  | #define XSHAL_ALLVALID_CACHEATTR_WRITETHRU	0x22221112	/* enable caches in write-through mode */
 | ||
|  | #define XSHAL_ALLVALID_CACHEATTR_BYPASS		0x22222222	/* disable caches in bypass mode */
 | ||
|  | #define XSHAL_ALLVALID_CACHEATTR_DEFAULT	XSHAL_ALLVALID_CACHEATTR_WRITEBACK	/* default setting to enable caches */
 | ||
|  | 
 | ||
|  | /*  These set any unused 512MB region to ILLEGAL attribute:  */ | ||
|  | #define XSHAL_STRICT_CACHEATTR_WRITEBACK	0xFFFF111F	/* enable caches in write-back mode */
 | ||
|  | #define XSHAL_STRICT_CACHEATTR_WRITEALLOC	0xFFFF111F	/* enable caches in write-allocate mode */
 | ||
|  | #define XSHAL_STRICT_CACHEATTR_WRITETHRU	0xFFFF111F	/* enable caches in write-through mode */
 | ||
|  | #define XSHAL_STRICT_CACHEATTR_BYPASS		0xFFFF222F	/* disable caches in bypass mode */
 | ||
|  | #define XSHAL_STRICT_CACHEATTR_DEFAULT		XSHAL_STRICT_CACHEATTR_WRITEBACK	/* default setting to enable caches */
 | ||
|  | 
 | ||
|  | /*  These set the first 512MB, if unused, to ILLEGAL attribute to help catch
 | ||
|  |  *  NULL-pointer dereference bugs; all other unused 512MB regions are set | ||
|  |  *  to cache-BYPASS attribute:  */ | ||
|  | #define XSHAL_TRAPNULL_CACHEATTR_WRITEBACK	0x2222111F	/* enable caches in write-back mode */
 | ||
|  | #define XSHAL_TRAPNULL_CACHEATTR_WRITEALLOC	0x2222111F	/* enable caches in write-allocate mode */
 | ||
|  | #define XSHAL_TRAPNULL_CACHEATTR_WRITETHRU	0x2222111F	/* enable caches in write-through mode */
 | ||
|  | #define XSHAL_TRAPNULL_CACHEATTR_BYPASS		0x2222222F	/* disable caches in bypass mode */
 | ||
|  | #define XSHAL_TRAPNULL_CACHEATTR_DEFAULT	XSHAL_TRAPNULL_CACHEATTR_WRITEBACK	/* default setting to enable caches */
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 			ISS (Instruction Set Simulator) SPECIFIC ... | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*  For now, ISS defaults to the TRAPNULL settings:  */ | ||
|  | #define XSHAL_ISS_CACHEATTR_WRITEBACK	XSHAL_TRAPNULL_CACHEATTR_WRITEBACK
 | ||
|  | #define XSHAL_ISS_CACHEATTR_WRITEALLOC	XSHAL_TRAPNULL_CACHEATTR_WRITEALLOC
 | ||
|  | #define XSHAL_ISS_CACHEATTR_WRITETHRU	XSHAL_TRAPNULL_CACHEATTR_WRITETHRU
 | ||
|  | #define XSHAL_ISS_CACHEATTR_BYPASS	XSHAL_TRAPNULL_CACHEATTR_BYPASS
 | ||
|  | #define XSHAL_ISS_CACHEATTR_DEFAULT	XSHAL_TRAPNULL_CACHEATTR_WRITEBACK
 | ||
|  | 
 | ||
|  | #define XSHAL_ISS_PIPE_REGIONS	0
 | ||
|  | #define XSHAL_ISS_SDRAM_REGIONS	0
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 			XT2000 BOARD SPECIFIC ... | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*  For the following, a 512MB region is used if it contains any system RAM,
 | ||
|  |  *  system ROM, local memory, XLMI, or other XT2000 board device or memory. | ||
|  |  *  Regions containing devices are forced to cache-BYPASS mode regardless | ||
|  |  *  of whether the macro is _WRITEBACK vs. _BYPASS etc.  */ | ||
|  | 
 | ||
|  | /*  These set any 512MB region unused on the XT2000 to ILLEGAL attribute:  */ | ||
|  | #define XSHAL_XT2000_CACHEATTR_WRITEBACK	0xFF22111F	/* enable caches in write-back mode */
 | ||
|  | #define XSHAL_XT2000_CACHEATTR_WRITEALLOC	0xFF22111F	/* enable caches in write-allocate mode */
 | ||
|  | #define XSHAL_XT2000_CACHEATTR_WRITETHRU	0xFF22111F	/* enable caches in write-through mode */
 | ||
|  | #define XSHAL_XT2000_CACHEATTR_BYPASS		0xFF22222F	/* disable caches in bypass mode */
 | ||
|  | #define XSHAL_XT2000_CACHEATTR_DEFAULT		XSHAL_XT2000_CACHEATTR_WRITEBACK	/* default setting to enable caches */
 | ||
|  | 
 | ||
|  | #define XSHAL_XT2000_PIPE_REGIONS	0x00000000	/* BusInt pipeline regions */
 | ||
|  | #define XSHAL_XT2000_SDRAM_REGIONS	0x00000440	/* BusInt SDRAM regions */
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /*----------------------------------------------------------------------
 | ||
|  | 				VECTOR INFO AND SIZES | ||
|  |   ----------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | #define XSHAL_VECTORS_PACKED		0
 | ||
|  | #define XSHAL_STATIC_VECTOR_SELECT	1
 | ||
|  | #define XSHAL_RESET_VECTOR_VADDR	0x40000400
 | ||
|  | #define XSHAL_RESET_VECTOR_PADDR	0x40000400
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  *  Sizes allocated to vectors by the system (memory map) configuration. | ||
|  |  *  These sizes are constrained by core configuration (eg. one vector's | ||
|  |  *  code cannot overflow into another vector) but are dependent on the | ||
|  |  *  system or board (or LSP) memory map configuration. | ||
|  |  * | ||
|  |  *  Whether or not each vector happens to be in a system ROM is also | ||
|  |  *  a system configuration matter, sometimes useful, included here also: | ||
|  |  */ | ||
|  | #define XSHAL_RESET_VECTOR_SIZE	0x00000300
 | ||
|  | #define XSHAL_RESET_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_USER_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_USER_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_PROGRAMEXC_VECTOR_SIZE	XSHAL_USER_VECTOR_SIZE	/* for backward compatibility */
 | ||
|  | #define XSHAL_USEREXC_VECTOR_SIZE	XSHAL_USER_VECTOR_SIZE	/* for backward compatibility */
 | ||
|  | #define XSHAL_KERNEL_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_KERNEL_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_STACKEDEXC_VECTOR_SIZE	XSHAL_KERNEL_VECTOR_SIZE	/* for backward compatibility */
 | ||
|  | #define XSHAL_KERNELEXC_VECTOR_SIZE	XSHAL_KERNEL_VECTOR_SIZE	/* for backward compatibility */
 | ||
|  | #define XSHAL_DOUBLEEXC_VECTOR_SIZE	0x00000040
 | ||
|  | #define XSHAL_DOUBLEEXC_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_WINDOW_VECTORS_SIZE	0x00000178
 | ||
|  | #define XSHAL_WINDOW_VECTORS_ISROM	0
 | ||
|  | #define XSHAL_INTLEVEL2_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_INTLEVEL2_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_INTLEVEL3_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_INTLEVEL3_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_INTLEVEL4_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_INTLEVEL4_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_INTLEVEL5_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_INTLEVEL5_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_INTLEVEL6_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_INTLEVEL6_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_DEBUG_VECTOR_SIZE		XSHAL_INTLEVEL6_VECTOR_SIZE
 | ||
|  | #define XSHAL_DEBUG_VECTOR_ISROM	XSHAL_INTLEVEL6_VECTOR_ISROM
 | ||
|  | #define XSHAL_NMI_VECTOR_SIZE	0x00000038
 | ||
|  | #define XSHAL_NMI_VECTOR_ISROM	0
 | ||
|  | #define XSHAL_INTLEVEL7_VECTOR_SIZE	XSHAL_NMI_VECTOR_SIZE
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #endif /*XTENSA_CONFIG_SYSTEM_H*/
 | ||
|  | 
 |