1 # ====================================================================
5 # ARM architectural HAL package configuration data
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.
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.
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
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.
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.
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.
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####
44 # Original data: gthomas
48 #####DESCRIPTIONEND####
50 # ====================================================================
51 cdl_package CYGPKG_HAL_ARM {
52 display "ARM architecture"
56 define_header hal_arm.h
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
63 compile hal_misc.c context.S arm_stub.c hal_syscall.c
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
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
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
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
96 cdl_interface CYGINT_HAL_ARM_THUMB_ARCH {
97 display "The CPU architecture supports THUMB mode"
100 cdl_option CYGHWR_THUMB {
101 display "Enable Thumb instruction set"
102 active_if { CYGINT_HAL_ARM_THUMB_ARCH != 0 }
105 Enable use of the Thumb instruction set."
108 # Note that when building a ROM monitor we include Thumb
109 # interworking in order to support Thumb applications running
110 # under a ARM ROM monitor.
111 cdl_option CYGBLD_ARM_ENABLE_THUMB_INTERWORK {
112 display "Enable Thumb interworking compiler option"
113 active_if { CYGINT_HAL_ARM_THUMB_ARCH != 0 }
114 default_value { (CYGHWR_THUMB || CYGSEM_HAL_ROM_MONITOR) }
116 This option controls the use of -mthumb-interwork in the
117 compiler flags. It defaults enabled in Thumb or ROM monitor
118 configurations, but can be overridden for reduced memory
119 footprint where interworking is not a requirement."
122 cdl_interface CYGINT_HAL_ARM_BIGENDIAN {
123 display "The platform and architecture supports Big Endian operation"
126 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
127 display "Use big-endian mode"
128 active_if { CYGINT_HAL_ARM_BIGENDIAN != 0 }
131 Use the CPU in big-endian mode."
134 cdl_interface CYGINT_HAL_ARM_ARCH_ARM7 {
135 display "The platform uses a processor with an ARM7 core"
138 cdl_interface CYGINT_HAL_ARM_ARCH_ARM9 {
139 display "The platform uses a processor with an ARM9 core"
142 cdl_interface CYGINT_HAL_ARM_ARCH_STRONGARM {
143 display "The platform uses a processor with a StrongARM core"
146 cdl_interface CYGINT_HAL_ARM_ARCH_XSCALE {
147 display "The platform uses a processor with a XScale core"
150 cdl_option CYGHWR_HAL_ARM_CPU_FAMILY {
151 display "ARM CPU family"
153 legal_values { (CYGINT_HAL_ARM_ARCH_ARM7 != 0) ? "ARM7" : ""
154 (CYGINT_HAL_ARM_ARCH_ARM9 != 0) ? "ARM9" : ""
155 (CYGINT_HAL_ARM_ARCH_STRONGARM != 0) ? "StrongARM" : ""
156 (CYGINT_HAL_ARM_ARCH_XSCALE != 0) ? "XScale" : ""
158 default_value { (CYGINT_HAL_ARM_ARCH_ARM7 != 0) ? "ARM7" :
159 (CYGINT_HAL_ARM_ARCH_ARM9 != 0) ? "ARM9" :
160 (CYGINT_HAL_ARM_ARCH_STRONGARM != 0) ? "StrongARM" :
161 (CYGINT_HAL_ARM_ARCH_XSCALE != 0) ? "XScale" :
165 It is possible to optimize code for different
166 ARM CPU families. This option selects which CPU to
167 optimize for on boards that support multiple CPU types."
170 cdl_option CYGHWR_HAL_ARM_DUMP_EXCEPTIONS {
171 display "Provide diagnostic dump for exceptions"
172 requires !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
175 Print messages about hardware exceptions, including
176 raw exception frame dump and register contents."
179 cdl_option CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS {
180 display "Process all exceptions with the eCos application"
183 Normal RAM-based programs which do not include GDB stubs
184 defer processing of the illegal instruction exception to GDB.
185 Setting this options allows the program to explicitly handle
186 the illegal instruction exception itself. Note: this will
187 prevent the use of GDB to debug the application as breakpoints
188 will no longer work."
191 cdl_option CYGHWR_HAL_ARM_ICE_THREAD_SUPPORT {
192 display "Support GDB thread operations via ICE/Multi-ICE"
194 requires CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
195 requires CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
196 requires CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
198 Allow GDB to get thread information via the ICE/Multi-ICE
202 cdl_option CYGOPT_HAL_ARM_SYSCALL_GPROF_SUPPORT {
203 display "Support for 'gprof' callbacks"
206 active_if CYGSEM_REDBOOT_BSP_SYSCALLS
207 active_if { CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT || CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT }
208 implements CYGINT_REDBOOT_BSP_SYSCALLS_GPROF_SUPPORT
210 The ARM HAL provides the macro for 'gprof' callbacks from RedBoot
211 to acquire the interrupt-context PC and SP, when this option is
215 cdl_option CYGOPT_HAL_ARM_WITH_USER_MODE {
216 display "Accept exceptions and irq's occurring in user mode"
219 For standalone Redboot based programs running in user mode."
222 cdl_option CYGOPT_HAL_ARM_PRESERVE_SVC_SPSR {
223 display "Preserve svc spsr before returning to svc mode"
226 This option secures exception and breakpoint processing
227 triggered during execution of application specific SWI
231 cdl_component CYGPKG_REDBOOT_ARM_OPTIONS {
232 display "Redboot for ARM options"
235 parent CYGPKG_REDBOOT
236 active_if CYGPKG_REDBOOT
238 This option lists the target's requirements for a valid Redboot
241 cdl_component CYGPKG_REDBOOT_ARM_LINUX_EXEC {
242 display "Provide the exec command in RedBoot"
244 parent CYGPKG_REDBOOT_ARM_OPTIONS
245 active_if CYGBLD_BUILD_REDBOOT_WITH_EXEC
247 This option contains requirements for booting linux
248 from RedBoot. The component is enabled/disabled from
250 compile -library=libextras.a redboot_linux_exec.c
252 cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_SWITCH {
253 display "Enable -x switch for exec command."
257 This option allows bi-endian platforms to launch kernels
258 built for an endianess different than the RedBoot endianess"
261 cdl_option CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS {
262 display "Physical base address of linux kernel"
264 default_value CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS_DEFAULT
266 This is the physical address of the base of the
270 cdl_option CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS_DEFAULT {
271 display "Default physical base address of linux kernel"
273 default_value 0x00008000
276 This is the physical address of the base of the
277 Linux kernel image. This option gets set by the
281 cdl_option CYGHWR_REDBOOT_ARM_LINUX_TAGS_ADDRESS {
282 display "Base address of linux kernel parameter tags"
286 This is the base address of the area of memory used to
287 pass parameters to the Linux kernel. This should be chosen
288 to avoid overlap with the kernel and any ramdisk image."
294 cdl_option CYGBLD_LINKER_SCRIPT {
295 display "Linker script"
298 calculated { "src/arm.ld" }
301 cdl_interface CYGINT_HAL_ARM_MEM_REAL_REGION_TOP {
302 display "Implementations of hal_arm_mem_real_region_top()"