Mercurial > ecos
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 (.); \ |
