2 * xtensa/config/system.h -- HAL definitions that are dependent on SYSTEM configuration
4 * NOTE: The location and contents of this file are highly subject to change.
6 * Source for configuration-independent binaries (which link in a
7 * configuration-specific HAL library) must NEVER include this file.
8 * The HAL itself has historically included this file in some instances,
9 * but this is not appropriate either, because the HAL is meant to be
10 * core-specific but system independent.
14 * Copyright (c) 2003 Tensilica, Inc. All Rights Reserved.
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of version 2.1 of the GNU Lesser General Public
18 * License as published by the Free Software Foundation.
20 * This program is distributed in the hope that it would be useful, but
21 * WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
24 * Further, this software is distributed without any warranty that it is
25 * free of the rightful claim of any third person regarding infringement
26 * or the like. Any license provided herein, whether implied or
27 * otherwise, applies only to this software file. Patent licenses, if
28 * any, provided herein do not apply to combinations of this program with
29 * other software, or any other product whatsoever.
31 * You should have received a copy of the GNU Lesser General Public
32 * License along with this program; if not, write the Free Software
33 * Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
38 #ifndef XTENSA_CONFIG_SYSTEM_H
39 #define XTENSA_CONFIG_SYSTEM_H
41 /*#include <xtensa/hal.h>*/
45 /*----------------------------------------------------------------------
47 ----------------------------------------------------------------------*/
50 * Strange place to find these, but the configuration GUI
51 * allows moving these around to account for various core
52 * configurations. Specific boards (and their BSP software)
53 * will have specific meanings for these components.
56 /* I/O Block areas: */
57 #define XSHAL_IOBLOCK_CACHED_VADDR 0xE0000000
58 #define XSHAL_IOBLOCK_CACHED_PADDR 0xF0000000
59 #define XSHAL_IOBLOCK_CACHED_SIZE 0x0E000000
61 #define XSHAL_IOBLOCK_BYPASS_VADDR 0xF0000000
62 #define XSHAL_IOBLOCK_BYPASS_PADDR 0xF0000000
63 #define XSHAL_IOBLOCK_BYPASS_SIZE 0x0E000000
66 #define XSHAL_ROM_VADDR 0xEE000000
67 #define XSHAL_ROM_PADDR 0xFE000000
68 #define XSHAL_ROM_SIZE 0x00400000
69 /* Largest available area (free of vectors): */
70 #define XSHAL_ROM_AVAIL_VADDR 0xEE00052C
71 #define XSHAL_ROM_AVAIL_VSIZE 0x003FFAD4
74 #define XSHAL_RAM_VADDR 0xD0000000
75 #define XSHAL_RAM_PADDR 0x00000000
76 #define XSHAL_RAM_VSIZE 0x08000000
77 #define XSHAL_RAM_PSIZE 0x10000000
78 #define XSHAL_RAM_SIZE XSHAL_RAM_PSIZE
79 /* Largest available area (free of vectors): */
80 #define XSHAL_RAM_AVAIL_VADDR 0xD0000370
81 #define XSHAL_RAM_AVAIL_VSIZE 0x07FFFC90
84 * Shadow system RAM (same device as system RAM, at different address).
85 * (Emulation boards need this for the SONIC Ethernet driver
86 * when data caches are configured for writeback mode.)
87 * NOTE: on full MMU configs, this points to the BYPASS virtual address
88 * of system RAM, ie. is the same as XSHAL_RAM_* except that virtual
89 * addresses are viewed through the BYPASS static map rather than
90 * the CACHED static map.
92 #define XSHAL_RAM_BYPASS_VADDR 0xD8000000
93 #define XSHAL_RAM_BYPASS_PADDR 0x00000000
94 #define XSHAL_RAM_BYPASS_PSIZE 0x08000000
96 /* Alternate system RAM (different device than system RAM): */
97 #define XSHAL_ALTRAM_VADDR 0xCEE00000
98 #define XSHAL_ALTRAM_PADDR 0xC0000000
99 #define XSHAL_ALTRAM_SIZE 0x00200000
102 /*----------------------------------------------------------------------
103 * DEVICE-ADDRESS DEPENDENT...
105 * Values written to CACHEATTR special register (or its equivalent)
106 * to enable and disable caches in various modes.
107 *----------------------------------------------------------------------*/
109 /*----------------------------------------------------------------------
110 BACKWARD COMPATIBILITY ...
111 ----------------------------------------------------------------------*/
114 * NOTE: the following two macros are DEPRECATED. Use the latter
115 * board-specific macros instead, which are specially tuned for the
116 * particular target environments' memory maps.
118 #define XSHAL_CACHEATTR_BYPASS XSHAL_XT2000_CACHEATTR_BYPASS /* disable caches in bypass mode */
119 #define XSHAL_CACHEATTR_DEFAULT XSHAL_XT2000_CACHEATTR_DEFAULT /* default setting to enable caches (no writeback!) */
121 /*----------------------------------------------------------------------
122 ISS (Instruction Set Simulator) SPECIFIC ...
123 ----------------------------------------------------------------------*/
125 #define XSHAL_ISS_CACHEATTR_WRITEBACK 0x1122222F /* enable caches in write-back mode */
126 #define XSHAL_ISS_CACHEATTR_WRITEALLOC 0x1122222F /* enable caches in write-allocate mode */
127 #define XSHAL_ISS_CACHEATTR_WRITETHRU 0x1122222F /* enable caches in write-through mode */
128 #define XSHAL_ISS_CACHEATTR_BYPASS 0x2222222F /* disable caches in bypass mode */
129 #define XSHAL_ISS_CACHEATTR_DEFAULT XSHAL_ISS_CACHEATTR_WRITEBACK /* default setting to enable caches */
131 /* For Coware only: */
132 #define XSHAL_COWARE_CACHEATTR_WRITEBACK 0x11222222 /* enable caches in write-back mode */
133 #define XSHAL_COWARE_CACHEATTR_WRITEALLOC 0x11222222 /* enable caches in write-allocate mode */
134 #define XSHAL_COWARE_CACHEATTR_WRITETHRU 0x11222222 /* enable caches in write-through mode */
135 #define XSHAL_COWARE_CACHEATTR_BYPASS 0x22222222 /* disable caches in bypass mode */
136 #define XSHAL_COWARE_CACHEATTR_DEFAULT XSHAL_COWARE_CACHEATTR_WRITEBACK /* default setting to enable caches */
138 /* For BFM and other purposes: */
139 #define XSHAL_ALLVALID_CACHEATTR_WRITEBACK 0x11222222 /* enable caches without any invalid regions */
140 #define XSHAL_ALLVALID_CACHEATTR_DEFAULT XSHAL_ALLVALID_CACHEATTR_WRITEBACK /* default setting for caches without any invalid regions */
142 #define XSHAL_ISS_PIPE_REGIONS 0
143 #define XSHAL_ISS_SDRAM_REGIONS 0
146 /*----------------------------------------------------------------------
147 XT2000 BOARD SPECIFIC ...
148 ----------------------------------------------------------------------*/
150 #define XSHAL_XT2000_CACHEATTR_WRITEBACK 0x22FFFFFF /* enable caches in write-back mode */
151 #define XSHAL_XT2000_CACHEATTR_WRITEALLOC 0x22FFFFFF /* enable caches in write-allocate mode */
152 #define XSHAL_XT2000_CACHEATTR_WRITETHRU 0x22FFFFFF /* enable caches in write-through mode */
153 #define XSHAL_XT2000_CACHEATTR_BYPASS 0x22FFFFFF /* disable caches in bypass mode */
154 #define XSHAL_XT2000_CACHEATTR_DEFAULT XSHAL_XT2000_CACHEATTR_WRITEBACK /* default setting to enable caches */
156 #define XSHAL_XT2000_PIPE_REGIONS 0x00001000 /* BusInt pipeline regions */
157 #define XSHAL_XT2000_SDRAM_REGIONS 0x00000005 /* BusInt SDRAM regions */
160 /*----------------------------------------------------------------------
162 ----------------------------------------------------------------------*/
165 * Sizes allocated to vectors by the system (memory map) configuration.
166 * These sizes are constrained by core configuration (eg. one vector's
167 * code cannot overflow into another vector) but are dependent on the
168 * system or board (or LSP) memory map configuration.
170 * Whether or not each vector happens to be in a system ROM is also
171 * a system configuration matter, sometimes useful, included here also:
173 #define XSHAL_RESET_VECTOR_SIZE 0x000004E0
174 #define XSHAL_RESET_VECTOR_ISROM 1
175 #define XSHAL_USER_VECTOR_SIZE 0x0000001C
176 #define XSHAL_USER_VECTOR_ISROM 0
177 #define XSHAL_PROGRAMEXC_VECTOR_SIZE XSHAL_USER_VECTOR_SIZE /* for backward compatibility */
178 #define XSHAL_USEREXC_VECTOR_SIZE XSHAL_USER_VECTOR_SIZE /* for backward compatibility */
179 #define XSHAL_KERNEL_VECTOR_SIZE 0x0000001C
180 #define XSHAL_KERNEL_VECTOR_ISROM 0
181 #define XSHAL_STACKEDEXC_VECTOR_SIZE XSHAL_KERNEL_VECTOR_SIZE /* for backward compatibility */
182 #define XSHAL_KERNELEXC_VECTOR_SIZE XSHAL_KERNEL_VECTOR_SIZE /* for backward compatibility */
183 #define XSHAL_DOUBLEEXC_VECTOR_SIZE 0x000000E0
184 #define XSHAL_DOUBLEEXC_VECTOR_ISROM 0
185 #define XSHAL_WINDOW_VECTORS_SIZE 0x00000180
186 #define XSHAL_WINDOW_VECTORS_ISROM 0
187 #define XSHAL_INTLEVEL2_VECTOR_SIZE 0x0000000C
188 #define XSHAL_INTLEVEL2_VECTOR_ISROM 0
189 #define XSHAL_INTLEVEL3_VECTOR_SIZE 0x0000000C
190 #define XSHAL_INTLEVEL3_VECTOR_ISROM 0
191 #define XSHAL_INTLEVEL4_VECTOR_SIZE 0x0000000C
192 #define XSHAL_INTLEVEL4_VECTOR_ISROM 1
193 #define XSHAL_DEBUG_VECTOR_SIZE XSHAL_INTLEVEL4_VECTOR_SIZE
194 #define XSHAL_DEBUG_VECTOR_ISROM XSHAL_INTLEVEL4_VECTOR_ISROM
197 #endif /*XTENSA_CONFIG_SYSTEM_H*/