comparison packages/hal/arm/arch/current/src/arm.ld @ 50:a0774359f013 ecos-sw-1999-11-02

Merge from eCos master repository on 1999-11-02-17:02:15-GMT
author jlarmour
date Tue, 02 Nov 1999 20:57:07 +0000
parents 797268ecc331
children f10165814f1e
comparison
equal deleted inserted replaced
49:698ff3191b93 50:a0774359f013
32 ENTRY(reset_vector) 32 ENTRY(reset_vector)
33 #ifdef EXTRAS 33 #ifdef EXTRAS
34 INPUT(extras.o) 34 INPUT(extras.o)
35 #endif 35 #endif
36 GROUP(libtarget.a libgcc.a) 36 GROUP(libtarget.a libgcc.a)
37
38 #if defined(__ARMEB__)
39 OUTPUT_FORMAT(elf32-bigarm)
40 #endif
41
42 #if defined(CYG_HAL_STARTUP_STUBS) \
43 && defined(CYGPKG_HAL_ARM_PID) \
44 && defined(__ARMEB__)
45 // Note: This is only needed when the PID board is used in BE mode without
46 // the proper ROM controller part.
47 //
48 // In big-endian mode, merge .RODATA sections into the .DATA section. This
49 // causes the data in these sections to be copied to RAM. When the CPU
50 // makes byte or halfword access to RAM, A0/A1 are modified correctly.
51 // This does not happen on ROM access (unless the proper ROM controller
52 // is used).
53 //
54 // This is matched in the PID stubs.ldi file which does not use the
55 // RODATA macros.
56 #define MERGE_IN_RODATA *(.rodata*)
57 #else
58 // Keep RODATA in separate sections.
59 #define MERGE_IN_RODATA
60 #endif
37 61
38 #define ALIGN_LMA 4 62 #define ALIGN_LMA 4
39 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) 63 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
40 #define LMA_EQ_VMA 64 #define LMA_EQ_VMA
41 #define FORCE_OUTPUT . = . 65 #define FORCE_OUTPUT . = .
90 { FORCE_OUTPUT; *(.gcc_except_table) } \ 114 { FORCE_OUTPUT; *(.gcc_except_table) } \
91 > _region_ 115 > _region_
92 116
93 #define SECTION_data(_region_, _vma_, _lma_) \ 117 #define SECTION_data(_region_, _vma_, _lma_) \
94 .data _vma_ : _lma_ \ 118 .data _vma_ : _lma_ \
95 { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) \ 119 { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) MERGE_IN_RODATA \
96 _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \ 120 _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \
97 _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \ 121 _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \
98 . = ALIGN (4); \ 122 . = ALIGN (4); \
99 __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) __DEVTAB_END__ = ABSOLUTE (.); \ 123 __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) __DEVTAB_END__ = ABSOLUTE (.); \
100 __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \ 124 __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \