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 cdl_option CYGBLD_ARM_EABI {
109 display "Enable EABI"
112 Use EABI tool-chain to compile eCos."
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) }
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."
131 cdl_interface CYGINT_HAL_ARM_BIGENDIAN {
132 display "The platform and architecture supports Big Endian operation"
135 cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
136 display "Use big-endian mode"
137 active_if { CYGINT_HAL_ARM_BIGENDIAN != 0 }
140 Use the CPU in big-endian mode."
143 cdl_interface CYGINT_HAL_ARM_ARCH_ARM7 {
144 display "The platform uses a processor with an ARM7 core"
147 cdl_interface CYGINT_HAL_ARM_ARCH_ARM9 {
148 display "The platform uses a processor with an ARM9 core"
151 cdl_interface CYGINT_HAL_ARM_ARCH_STRONGARM {
152 display "The platform uses a processor with a StrongARM core"
155 cdl_interface CYGINT_HAL_ARM_ARCH_XSCALE {
156 display "The platform uses a processor with a XScale core"
159 cdl_option CYGHWR_HAL_ARM_CPU_FAMILY {
160 display "ARM CPU family"
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" : ""
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" :
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."
179 cdl_option CYGHWR_HAL_ARM_DUMP_EXCEPTIONS {
180 display "Provide diagnostic dump for exceptions"
181 requires !CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
184 Print messages about hardware exceptions, including
185 raw exception frame dump and register contents."
188 cdl_option CYGIMP_HAL_PROCESS_ALL_EXCEPTIONS {
189 display "Process all exceptions with the eCos application"
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."
200 cdl_option CYGHWR_HAL_ARM_ICE_THREAD_SUPPORT {
201 display "Support GDB thread operations via ICE/Multi-ICE"
203 requires CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
204 requires CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
205 requires CYGDBG_KERNEL_DEBUG_GDB_THREAD_SUPPORT
207 Allow GDB to get thread information via the ICE/Multi-ICE
211 cdl_option CYGOPT_HAL_ARM_SYSCALL_GPROF_SUPPORT {
212 display "Support for 'gprof' callbacks"
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
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
224 cdl_option CYGOPT_HAL_ARM_WITH_USER_MODE {
225 display "Accept exceptions and irq's occurring in user mode"
228 For standalone Redboot based programs running in user mode."
231 cdl_option CYGOPT_HAL_ARM_PRESERVE_SVC_SPSR {
232 display "Preserve svc spsr before returning to svc mode"
235 This option secures exception and breakpoint processing
236 triggered during execution of application specific SWI
240 cdl_component CYGPKG_REDBOOT_ARM_OPTIONS {
241 display "Redboot for ARM options"
244 parent CYGPKG_REDBOOT
245 active_if CYGPKG_REDBOOT
247 This option lists the target's requirements for a valid Redboot
250 cdl_component CYGPKG_REDBOOT_ARM_LINUX_EXEC {
251 display "Provide the exec command in RedBoot"
253 parent CYGPKG_REDBOOT_ARM_OPTIONS
254 active_if CYGBLD_BUILD_REDBOOT_WITH_EXEC
256 This option contains requirements for booting linux
257 from RedBoot. The component is enabled/disabled from
259 compile -library=libextras.a redboot_linux_exec.c
261 cdl_option CYGHWR_REDBOOT_LINUX_EXEC_X_SWITCH {
262 display "Enable -x switch for exec command."
266 This option allows bi-endian platforms to launch kernels
267 built for an endianess different than the RedBoot endianess"
270 cdl_option CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS {
271 display "Physical base address of linux kernel"
273 default_value CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS_DEFAULT
275 This is the physical address of the base of the
279 cdl_option CYGHWR_REDBOOT_ARM_LINUX_EXEC_ADDRESS_DEFAULT {
280 display "Default physical base address of linux kernel"
282 default_value 0x00008000
285 This is the physical address of the base of the
286 Linux kernel image. This option gets set by the
290 cdl_option CYGHWR_REDBOOT_ARM_LINUX_TAGS_ADDRESS {
291 display "Base address of linux kernel parameter tags"
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."
303 cdl_option CYGBLD_LINKER_SCRIPT {
304 display "Linker script"
307 calculated { "src/arm.ld" }
310 cdl_interface CYGINT_HAL_ARM_MEM_REAL_REGION_TOP {
311 display "Implementations of hal_arm_mem_real_region_top()"