]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/hal/arm/arch/v2_0/cdl/hal_arm.cdl
RedBoot Release TX53-v3 2012-02-08
[karo-tx-redboot.git] / packages / hal / arm / arch / v2_0 / cdl / hal_arm.cdl
1 # ====================================================================
2 #
3 #      hal_arm.cdl
4 #
5 #      ARM architectural HAL package configuration data
6 #
7 # ====================================================================
8 #####ECOSGPLCOPYRIGHTBEGIN####
9 ## -------------------------------------------
10 ## This file is part of eCos, the Embedded Configurable Operating System.
11 ## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 ##
13 ## eCos is free software; you can redistribute it and/or modify it under
14 ## the terms of the GNU General Public License as published by the Free
15 ## Software Foundation; either version 2 or (at your option) any later version.
16 ##
17 ## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 ## WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 ## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20 ## for more details.
21 ##
22 ## You should have received a copy of the GNU General Public License along
23 ## with eCos; if not, write to the Free Software Foundation, Inc.,
24 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25 ##
26 ## As a special exception, if other files instantiate templates or use macros
27 ## or inline functions from this file, or you compile this file and link it
28 ## with other works to produce a work based on this file, this file does not
29 ## by itself cause the resulting work to be covered by the GNU General Public
30 ## License. However the source code for this file must still be made available
31 ## in accordance with section (3) of the GNU General Public License.
32 ##
33 ## This exception does not invalidate any other reasons why a work based on
34 ## this file might be covered by the GNU General Public License.
35 ##
36 ## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37 ## at http://sources.redhat.com/ecos/ecos-license/
38 ## -------------------------------------------
39 #####ECOSGPLCOPYRIGHTEND####
40 # ====================================================================
41 ######DESCRIPTIONBEGIN####
42 #
43 # Author(s):      bartv
44 # Original data:  gthomas
45 # Contributors:
46 # Date:           1999-06-13
47 #
48 #####DESCRIPTIONEND####
49 #
50 # ====================================================================
51 cdl_package CYGPKG_HAL_ARM {
52     display       "ARM architecture"
53     parent        CYGPKG_HAL
54     hardware
55     include_dir   cyg/hal
56     define_header hal_arm.h
57     description   "
58         The ARM architecture HAL package provides generic
59         support for this processor architecture. It is also
60         necessary to select a specific target platform HAL
61         package."
62
63     compile       hal_misc.c context.S arm_stub.c hal_syscall.c
64
65     # The "-o file" is a workaround for CR100958 - without it the
66     # output file would end up in the source directory under CygWin.
67     # n.b. grep does not behave itself under win32
68     make -priority 1 {
69         arm.inc : <PACKAGE>/src/hal_mk_defs.c
70         $(CC) $(ACTUAL_CFLAGS) $(INCLUDE_PATH) -Wp,-MD,arm.tmp -o hal_mk_defs.tmp -S $<
71         fgrep .equ hal_mk_defs.tmp | sed s/#// > $@
72         @echo $@ ": \\" > $(notdir $@).deps
73         @tail -n +2 arm.tmp >> $(notdir $@).deps
74         @echo >> $(notdir $@).deps
75         @rm arm.tmp hal_mk_defs.tmp
76     }
77
78     make {
79         <PREFIX>/lib/vectors.o : <PACKAGE>/src/vectors.S
80         $(CC) -Wp,-MD,vectors.tmp $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -c -o $@ $<
81         @echo $@ ": \\" > $(notdir $@).deps
82         @tail -n +2 vectors.tmp >> $(notdir $@).deps
83         @echo >> $(notdir $@).deps
84         @rm vectors.tmp
85     }
86
87     make {
88         <PREFIX>/lib/target.ld: <PACKAGE>/src/arm.ld
89         $(CC) -E -P -Wp,-MD,target.tmp -xc $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -o $@ $<
90         @echo $@ ": \\" > $(notdir $@).deps
91         @tail -n +2 target.tmp >> $(notdir $@).deps
92         @echo >> $(notdir $@).deps
93         @rm target.tmp
94     }
95
96     cdl_interface CYGINT_HAL_ARM_THUMB_ARCH {
97         display "The CPU architecture supports THUMB mode"
98     }
99
100     cdl_option CYGHWR_THUMB {
101         display          "Enable Thumb instruction set"
102         active_if        { CYGINT_HAL_ARM_THUMB_ARCH != 0 }
103         default_value    0
104         description      "
105             Enable use of the Thumb instruction set."
106     }
107
108     cdl_option CYGBLD_ARM_EABI {
109         display          "Enable EABI"
110         default_value    1
111         description      "
112             Use EABI tool-chain to compile eCos."
113
114             compile arm_eabi.c
115     }
116
117     # Note that when building a ROM monitor we include Thumb
118     # interworking in order to support Thumb applications running
119     # under a ARM ROM monitor.
120     cdl_option CYGBLD_ARM_ENABLE_THUMB_INTERWORK {
121         display       "Enable Thumb interworking compiler option"
122         active_if        { CYGINT_HAL_ARM_THUMB_ARCH != 0 }
123         default_value { (CYGHWR_THUMB || CYGSEM_HAL_ROM_MONITOR) }
124         description "
125             This option controls the use of -mthumb-interwork in the
126             compiler flags. It defaults enabled in Thumb or ROM monitor
127             configurations, but can be overridden for reduced memory
128             footprint where interworking is not a requirement."
129     }
130
131     cdl_interface CYGINT_HAL_ARM_BIGENDIAN {
132         display "The platform and architecture supports Big Endian operation"
133     }
134
135     cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
136         display          "Use big-endian mode"
137         active_if        { CYGINT_HAL_ARM_BIGENDIAN != 0 }
138         default_value    0
139         description      "
140             Use the CPU in big-endian mode."
141     }
142
143     cdl_interface CYGINT_HAL_ARM_ARCH_ARM7 {
144         display "The platform uses a processor with an ARM7 core"
145     }
146
147     cdl_interface CYGINT_HAL_ARM_ARCH_ARM9 {
148         display "The platform uses a processor with an ARM9 core"
149     }
150
151     cdl_interface CYGINT_HAL_ARM_ARCH_STRONGARM {
152         display "The platform uses a processor with a StrongARM core"
153     }
154
155     cdl_interface CYGINT_HAL_ARM_ARCH_XSCALE {
156         display "The platform uses a processor with a XScale core"
157     }
158
159     cdl_option CYGHWR_HAL_ARM_CPU_FAMILY {
160         display       "ARM CPU family"
161         flavor        data
162         legal_values  { (CYGINT_HAL_ARM_ARCH_ARM7 != 0) ? "ARM7" : ""
163                         (CYGINT_HAL_ARM_ARCH_ARM9 != 0) ? "ARM9" : ""
164                         (CYGINT_HAL_ARM_ARCH_STRONGARM != 0) ? "StrongARM" : ""
165                         (CYGINT_HAL_ARM_ARCH_XSCALE != 0) ? "XScale" : ""
166                         "" }
167         default_value  { (CYGINT_HAL_ARM_ARCH_ARM7 != 0) ? "ARM7" : 
168                          (CYGINT_HAL_ARM_ARCH_ARM9 != 0) ? "ARM9" : 
169                          (CYGINT_HAL_ARM_ARCH_STRONGARM != 0) ? "StrongARM" : 
170                          (CYGINT_HAL_ARM_ARCH_XSCALE != 0) ? "XScale" :
171                          "unknown" }
172         no_define
173         description   "
174              It is possible to optimize code for different
175              ARM CPU families. This option selects which CPU to
176              optimize for on boards that support multiple CPU types."
177     }
178
179     cdl_option CYGHWR_HAL_ARM_DUMP_EXCEPTIONS {
180         display          "Provide diagnostic dump for exceptions"
181         requires         !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
182         default_value    0
183         description      "
184             Print messages about hardware exceptions, including
185             raw exception frame dump and register contents."
186     }
187
188     cdl_option CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS {
189         display          "Process all exceptions with the eCos application"
190         default_value    0
191         description      "
192            Normal RAM-based programs which do not include GDB stubs 
193            defer processing of the illegal instruction exception to GDB.
194            Setting this options allows the program to explicitly handle
195            the illegal instruction exception itself.  Note: this will
196            prevent the use of GDB to debug the application as breakpoints
197            will no longer work."
198     }
199
200     cdl_option CYGHWR_HAL_ARM_ICE_THREAD_SUPPORT {
201         display          "Support GDB thread operations via ICE/Multi-ICE"
202         default_value    0
203         requires         CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
204         requires         CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
205         requires         CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
206         description      "
207            Allow GDB to get thread information via the ICE/Multi-ICE
208            connection."
209     }
210
211     cdl_option CYGOPT_HAL_ARM_SYSCALL_GPROF_SUPPORT {
212         display         "Support for 'gprof' callbacks"
213         calculated      1
214         no_define
215         active_if       CYGSEM_REDBOOT_BSP_SYSCALLS
216         active_if       { CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT || CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT }
217         implements      CYGINT_REDBOOT_BSP_SYSCALLS_GPROF_SUPPORT
218         description     "
219             The ARM HAL provides the macro for 'gprof' callbacks from RedBoot
220             to acquire the interrupt-context PC and SP, when this option is
221             active."
222     }
223
224     cdl_option CYGOPT_HAL_ARM_WITH_USER_MODE {
225         display          "Accept exceptions and irq's occurring in user mode"
226         default_value    0
227         description      "
228             For standalone Redboot based programs running in user mode."
229     }
230
231     cdl_option CYGOPT_HAL_ARM_PRESERVE_SVC_SPSR {
232         display          "Preserve svc spsr before returning to svc mode"
233         default_value    0
234         description      "
235             This option secures exception and breakpoint processing
236             triggered during execution of application specific SWI
237             handlers."
238     }
239
240     cdl_component CYGPKG_REDBOOT_ARM_OPTIONS {
241         display       "Redboot for ARM options"
242         flavor        none
243         no_define
244         parent        CYGPKG_REDBOOT
245         active_if     CYGPKG_REDBOOT
246         description   "
247             This option lists the target's requirements for a valid Redboot
248             configuration."
249
250         cdl_component CYGPKG_REDBOOT_ARM_LINUX_EXEC {
251             display        "Provide the exec command in RedBoot"
252             flavor         none
253             parent         CYGPKG_REDBOOT_ARM_OPTIONS
254             active_if      CYGBLD_BUILD_REDBOOT_WITH_EXEC
255             description    "
256                 This option contains requirements for booting linux
257                 from RedBoot. The component is enabled/disabled from
258                 RedBoots CDL."
259             compile -library=libextras.a redboot_linux_exec.c
260
261             cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_SWITCH {
262                 display "Enable -x switch for exec command."
263                 flavor bool
264                 default_value 0
265                 description "
266                     This option allows bi-endian platforms to launch kernels
267                     built for an endianess different than the RedBoot endianess"
268             }
269  
270             cdl_option CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS {
271                 display       "Physical base address of linux kernel"
272                 flavor        data
273                 default_value CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS_DEFAULT
274                 description   "
275                     This is the physical address of the base of the 
276                     Linux kernel image."
277             }
278
279             cdl_option CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS_DEFAULT {
280                 display       "Default physical base address of linux kernel"
281                 flavor        data
282                 default_value 0x00008000
283                 no_define
284                 description   "
285                     This is the physical address of the base of the 
286                     Linux kernel image. This option gets set by the 
287                     platform CDL."
288             }
289
290             cdl_option CYGHWR_REDBOOT_ARM_LINUX_TAGS_ADDRESS {
291                 display       "Base address of linux kernel parameter tags"
292                 flavor        data
293                 default_value 0x100
294                 description   "
295                    This is the base address of the area of memory used to
296                    pass parameters to the Linux kernel. This should be chosen
297                    to avoid overlap with the kernel and any ramdisk image."
298             }
299         }
300
301     }
302
303     cdl_option CYGBLD_LINKER_SCRIPT {
304         display "Linker script"
305         flavor data
306         no_define
307         calculated  { "src/arm.ld" }
308     }
309
310     cdl_interface CYGINT_HAL_ARM_MEM_REAL_REGION_TOP {
311         display  "Implementations of hal_arm_mem_real_region_top()"
312     }
313 }
314
315 # EOF hal_arm.cdl