Changeset 8d992be in rtems


Ignore:
Timestamp:
Dec 3, 2010, 10:52:07 AM (10 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
8353f94f
Parents:
dda95953
Message:

2010-12-03 Sebastian Huber <sebastian.huber@…>

  • bsp_specs, start/start.S, startup/linkcmds: Use linker command base file.
Location:
c/src/lib/libbsp/arm
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/arm/csb336/ChangeLog

    rdda95953 r8d992be  
     12010-12-03      Sebastian Huber <sebastian.huber@embedded-brains.de>
     2
     3        * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
     4        file.
     5
    162010-04-30      Sebastian Huber <sebastian.huber@embedded-brains.de>
    27
  • c/src/lib/libbsp/arm/csb336/bsp_specs

    rdda95953 r8d992be  
    88
    99*link:
    10 %{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
     10%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
    1111
    1212*endfile:
    1313%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
    14 
  • c/src/lib/libbsp/arm/csb336/start/start.S

    rdda95953 r8d992be  
    1212 * $Id$
    1313 */
     14
     15#include <bsp/linker-symbols.h>
    1416
    1517/* Some standard definitions...*/
     
    4042
    4143        /* zero the bss */
    42         ldr     r1, =_bss_end_
    43         ldr     r0, =_bss_start_
     44        ldr     r1, =bsp_section_bss_end
     45        ldr     r0, =bsp_section_bss_begin
    4446
    4547_bss_init:
     
    5456        mov     r0, #(PSR_MODE_IRQ | PSR_I | PSR_F)     /* No interrupts */
    5557        msr     cpsr, r0
    56         ldr     r1, =_irq_stack_size
    57         ldr     sp, =_irq_stack
     58        ldr     r1, =bsp_stack_irq_size
     59        ldr     sp, =bsp_stack_irq_begin
    5860        add     sp, sp, r1
    5961
     
    6163        mov     r0, #(PSR_MODE_FIQ | PSR_I | PSR_F)     /* No interrupts */
    6264        msr     cpsr, r0
    63         ldr     r1, =_fiq_stack_size
    64         ldr     sp, =_fiq_stack
     65        ldr     r1, =bsp_stack_fiq_size
     66        ldr     sp, =bsp_stack_fiq_begin
    6567        add     sp, sp, r1
    6668
     
    6870        mov     r0, #(PSR_MODE_ABT | PSR_I | PSR_F)     /* No interrupts */
    6971        msr     cpsr, r0
    70         ldr     r1, =_abt_stack_size
    71         ldr     sp, =_abt_stack
     72        ldr     r1, =bsp_stack_abt_size
     73        ldr     sp, =bsp_stack_abt_begin
    7274        add     sp, sp, r1
    7375
     
    7577        mov     r0, #(PSR_MODE_UNDEF | PSR_I | PSR_F)     /* No interrupts */
    7678        msr     cpsr, r0
    77         ldr     r1, =_undef_stack_size
    78         ldr     sp, =_undef_stack
     79        ldr     r1, =bsp_stack_und_size
     80        ldr     sp, =bsp_stack_und_begin
    7981        add     sp, sp, r1
    8082
     
    8284        mov     r0, #(PSR_MODE_SVC | PSR_I | PSR_F)     /* No interrupts */
    8385        msr     cpsr, r0
    84         ldr     r1, =_svc_stack_size
    85         ldr     sp, =_svc_stack
     86        ldr     r1, =bsp_stack_svc_size
     87        ldr     sp, =bsp_stack_svc_begin
    8688        add     sp, sp, r1
    8789        sub     sp, sp, #0x64
  • c/src/lib/libbsp/arm/csb336/startup/linkcmds

    rdda95953 r8d992be  
    1 /*
    2  *  Cogent CSB336 Linker script
    3  *
    4  *  Copyright (c) 2004 by Cogent Computer Systems
    5  *  Written by Jay Monkman <jtm@lopingdog.com>
    6  *
    7  *  The license and distribution terms for this file may be
    8  *  found in the file LICENSE in this distribution or at
    9  *
    10  *  http://www.rtems.com/license/LICENSE.
    11  *
    12  *  $Id$
    13  */
    14 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
    15               "elf32-littlearm")
    16 OUTPUT_ARCH(arm)
    17 ENTRY(_start)
    18 /* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
    19 
    20 
    211MEMORY {
    22         sdram : ORIGIN = 0x08200000, LENGTH = 30M
     2        SDRAM_MMU : ORIGIN = 0x08200000, LENGTH = 16k
     3        SDRAM : ORIGIN = 0x08204000, LENGTH = 30M - 16k
     4        NIRVANA : ORIGIN = 0, LENGTH = 0
    235}
    246
    25 /*
    26  * Declare some sizes.
    27  */
     7REGION_ALIAS ("REGION_START", SDRAM);
     8REGION_ALIAS ("REGION_VECTOR", SDRAM);
     9REGION_ALIAS ("REGION_TEXT", SDRAM);
     10REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
     11REGION_ALIAS ("REGION_RODATA", SDRAM);
     12REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
     13REGION_ALIAS ("REGION_DATA", SDRAM);
     14REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
     15REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
     16REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
     17REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
     18REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
     19REGION_ALIAS ("REGION_BSS", SDRAM);
     20REGION_ALIAS ("REGION_WORK", SDRAM);
     21REGION_ALIAS ("REGION_STACK", SDRAM);
    2822
    29 /* The base for SDRAM is set to umon's APPRAMBASE */
    30 _sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x08200000;
    31 _sdram_size = DEFINED(_sdram_size) ? _sdram_size : 30M;
     23_ttbl_base = ORIGIN (SDRAM_MMU);
    3224
    33 RamBase = _sdram_base;
    34 RamSize = _sdram_size;
    35 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
    36 
    37 _irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
    38 _fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
    39 _abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x400;
    40 _undef_stack_size = DEFINED(_undef_stack_size) ? _undef_stack_size : 0x400;
    41 _svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
    42 
    43 
    44 
    45 /* Do we need any of these for elf?
    46    __DYNAMIC = 0;    */
    47 
    48 SECTIONS
    49 {
    50   .base :
    51   {
    52     arm_exception_table = .;   
    53 
    54     arm_reset_vect    = .;     /* 0x00 */
    55     . += 4;
    56 
    57     arm_undef_vect    = .;     /* 0x04 */
    58     . += 4;
    59 
    60     arm_swi_vect      = .;     /* 0x08 */
    61     . += 4;
    62 
    63     arm_iabrt_vect    = .;     /* 0x0c */
    64     . += 4;
    65 
    66     arm_dabrt_vect    = .;     /* 0x10 */
    67     . += 4;
    68 
    69     /* no vector here */
    70     . += 4;
    71 
    72     arm_irq_vect      = .;     /* 0x18 */
    73     . += 4;
    74 
    75     arm_fiq_vect      = .;     /* 0x1c */
    76     . += 4;
    77                               /* FIXME: */
    78 
    79     rtems_vector_table = .;
    80     . += (8 * 4);                     /* 8 ARM interrupts */
    81        
    82     . = ALIGN (0x100);
    83 
    84 
    85   } > sdram
    86 
    87   .init          :
    88   {
    89     KEEP (*(.init))
    90   } > sdram   /*=0*/
    91 
    92   .text      :
    93   {
    94         _text_start = .;
    95          CREATE_OBJECT_SYMBOLS
    96         *(.text)
    97         *(.text.*)
    98 
    99         /*
    100          * Special FreeBSD sysctl sections.
    101          */
    102         . = ALIGN (16);
    103         __start_set_sysctl_set = .;
    104         *(set_sysctl_*);
    105         __stop_set_sysctl_set = ABSOLUTE(.);
    106         *(set_domain_*);
    107         *(set_pseudo_*);
    108 
    109         /* .gnu.warning sections are handled specially by elf32.em.  */
    110         *(.gnu.warning)
    111         *(.gnu.linkonce.t*)
    112         *(.glue_7)
    113         *(.glue_7t)
    114 
    115         /* I think these come from the ld docs: */     
    116         ___CTOR_LIST__ = .;
    117         LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
    118         *(.ctors)
    119         LONG(0)
    120         ___CTOR_END__ = .;
    121         ___DTOR_LIST__ = .;
    122         LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
    123         *(.dtors)
    124         LONG(0)
    125         ___DTOR_END__ = .;
    126 
    127         _etext = .;
    128         PROVIDE (etext = .);
    129   } > sdram 
    130 
    131   .fini      :
    132   {
    133     KEEP (*(.fini))
    134   } > sdram  /*=0*/
    135 
    136   .data :
    137   {
    138     *(.data)
    139     *(.data.*)
    140     *(.gnu.linkonce.d*)
    141     *(.jcr)
    142     SORT(CONSTRUCTORS)
    143     _edata = .;
    144   } > sdram
    145 
    146   .eh_frame : { *(.eh_frame) } > sdram
    147   .data1   : { *(.data1) } > sdram
    148   .eh_frame : { *(.eh_frame) } > sdram
    149   .gcc_except_table : { *(.gcc_except_table*) } > sdram
    150 
    151   .rodata :
    152   {
    153     *(.rodata)
    154     *(.rodata.*)
    155     *(.gnu.linkonce.r*)
    156   } > sdram
    157 
    158   .bss       :
    159   {
    160         _bss_start_ = .;
    161         _clear_start = .;
    162         *(.bss)
    163         *(.bss.*)
    164         *(.gnu.linkonce.b.*)
    165         *(COMMON)
    166         . = ALIGN(64);
    167         _clear_end = .;
    168 
    169         . = ALIGN (256);
    170         _abt_stack = .;
    171         . += _abt_stack_size;
    172 
    173         . = ALIGN (256);
    174         _undef_stack = .;
    175         . += _undef_stack_size;
    176 
    177         . = ALIGN (256);
    178         _irq_stack = .;
    179         . += _irq_stack_size;
    180 
    181         . = ALIGN (256);
    182         _fiq_stack = .;
    183         . += _fiq_stack_size;
    184 
    185         . = ALIGN (256);
    186         _svc_stack = .;
    187         . += _svc_stack_size;
    188 
    189         _bss_end_ = .;
    190         _end = .;
    191         __end = .;
    192 
    193 /*
    194  * Ideally, the MMU's translation table would be in SRAM. But we
    195  * don't have any. If we don't use more regions than TLB entries (64),
    196  * the lookup will only happen once for each region.
    197  */
    198         . = ALIGN (16 * 1024);
    199         _ttbl_base = .;
    200         . += (16 * 1024);
    201 
    202         . = ALIGN (1024);
    203         _bss_free_start = .;
    204         WorkAreaBase = .;
    205 
    206   } > sdram
    207 
    208 
    209 /* Debugging stuff follows? */
    210 
    211   /* Stabs debugging sections.  */
    212   .stab 0 : { *(.stab) }
    213   .stabstr 0 : { *(.stabstr) }
    214   .stab.excl 0 : { *(.stab.excl) }
    215   .stab.exclstr 0 : { *(.stab.exclstr) }
    216   .stab.index 0 : { *(.stab.index) }
    217   .stab.indexstr 0 : { *(.stab.indexstr) }
    218   .comment 0 : { *(.comment) }
    219   /* DWARF debug sections.
    220      Symbols in the DWARF debugging sections are relative to the beginning
    221      of the section so we begin them at 0.  */
    222   /* DWARF 1 */
    223   .debug          0 : { *(.debug) }
    224   .line           0 : { *(.line) }
    225   /* GNU DWARF 1 extensions */
    226   .debug_srcinfo  0 : { *(.debug_srcinfo) }
    227   .debug_sfnames  0 : { *(.debug_sfnames) }
    228   /* DWARF 1.1 and DWARF 2 */
    229   .debug_aranges  0 : { *(.debug_aranges) }
    230   .debug_pubnames 0 : { *(.debug_pubnames) }
    231   /* DWARF 2 */
    232   .debug_info     0 : { *(.debug_info) }
    233   .debug_abbrev   0 : { *(.debug_abbrev) }
    234   .debug_line     0 : { *(.debug_line) }
    235   .debug_frame    0 : { *(.debug_frame) }
    236   .debug_str      0 : { *(.debug_str) }
    237   .debug_loc      0 : { *(.debug_loc) }
    238   .debug_macinfo  0 : { *(.debug_macinfo) }
    239   /* SGI/MIPS DWARF 2 extensions */
    240   .debug_weaknames 0 : { *(.debug_weaknames) }
    241   .debug_funcnames 0 : { *(.debug_funcnames) }
    242   .debug_typenames 0 : { *(.debug_typenames) }
    243   .debug_varnames  0 : { *(.debug_varnames) }
    244   /*.stack 0x80000 : { _stack = .; *(.stack) }*/
    245   /* These must appear regardless of  .  */
    246 }
    247 
     25INCLUDE linkcmds.armv4
  • c/src/lib/libbsp/arm/edb7312/ChangeLog

    rdda95953 r8d992be  
     12010-12-03      Sebastian Huber <sebastian.huber@embedded-brains.de>
     2
     3        * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
     4        file.
     5
    162010-04-30      Sebastian Huber <sebastian.huber@embedded-brains.de>
    27
  • c/src/lib/libbsp/arm/edb7312/bsp_specs

    rdda95953 r8d992be  
    88
    99*link:
    10 %{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
     10%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
    1111
    1212*endfile:
  • c/src/lib/libbsp/arm/edb7312/start/start.S

    rdda95953 r8d992be  
    11/*
    22 * Cirrus EP7312 Startup code
     3 *
     4 * Copyright (c) 2010 embedded brains GmbH.
    35 *
    46 * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
     
    1416 *  $Id$
    1517*/
     18
     19#include <bsp/linker-symbols.h>
    1620
    1721/* Some standard definitions...*/
     
    2933.equ F_Bit,                  0x40
    3034
    31         .text
    32         .globl  _start
    33 
    34 _start:
    35         /* store the sp */
    36         mov     r12, sp
    37 /*
    38  * Here is the code to initialize the low-level BSP environment
    39  * (Chip Select, PLL, ....?)
    40  */
    41 
    42 /* zero the bss */
    43         LDR     r1, =_bss_end_       /* get end of ZI region */
    44         LDR     r0, =_bss_start_     /* load base address of ZI region */
    45 
    46 zi_init:
    47         MOV     r2, #0
    48         CMP     r0, r1                 /* loop whilst r0 < r1 */
    49         STRLOT   r2, [r0], #4
    50         BLO     zi_init
    51 
    52 /* Load basic ARM7 interrupt table */
    53 VectorInit:
    54         MOV     R0, #0
    55         ADR     R1, Vector_Init_Block
    56         LDMIA   R1!, {R2, r3}   /* Copy the Vectors (8 words) */
    57         STMIA   R0!, {r2, r3}
    58         LDMIA   R1!, {R2, r3}   /* Copy the Vectors (8 words) */
    59         STMIA   R0!, {r2, r3}
    60         LDMIA   R1!, {R2, r3}   /* Copy the Vectors (8 words) */
    61         STMIA   R0!, {r2, r3}
    62         LDMIA   R1!, {R2, r3}   /* Copy the Vectors (8 words) */
    63         STMIA   R0!, {r2, r3}
    64 
    65         LDMIA   R1!, {R2, r3}   /* Copy the .long'ed addresses (8 words) */
    66         STMIA   R0!, {r2, r3}
    67         LDMIA   R1!, {R2, r3}   /* Copy the .long'ed addresses (8 words) */
    68         STMIA   R0!, {r2, r3}
    69         LDMIA   R1!, {R2, r3}   /* Copy the .long'ed addresses (8 words) */
    70         STMIA   R0!, {r2, r3}
    71         LDMIA   R1!, {R2, r3}   /* Copy the .long'ed addresses (8 words) */
    72         STMIA   R0!, {r2, r3}
    73 
    74         B       init2
     35.section ".bsp_start_text", "ax"
     36.arm
    7537
    7638/*******************************************************
     
    11981        B       FIQ_Handler
    12082
    121 init2 :
     83        .globl  _start
     84_start:
     85        /* store the sp */
     86        mov     r12, sp
     87/*
     88 * Here is the code to initialize the low-level BSP environment
     89 * (Chip Select, PLL, ....?)
     90 */
     91
     92/* zero the bss */
     93        LDR     r1, =bsp_section_bss_end   /* get end of ZI region */
     94        LDR     r0, =bsp_section_bss_begin /* load base address of ZI region */
     95
     96zi_init:
     97        MOV     r2, #0
     98        CMP     r0, r1                 /* loop whilst r0 < r1 */
     99        STRLOT   r2, [r0], #4
     100        BLO     zi_init
     101
    122102/* --- Initialise stack pointer registers */
    123103
     
    125105    MOV     r0, #Mode_IRQ | I_Bit | F_Bit     /* No interrupts */
    126106    MSR     cpsr, r0
    127     ldr     r1, =_irq_stack_size
    128     LDR     sp, =_irq_stack
     107    ldr     r1, =bsp_stack_irq_size
     108    LDR     sp, =bsp_stack_irq_begin
    129109    add     sp, sp, r1
    130110    sub     sp, sp, #0x64
     
    133113    MOV     r0, #Mode_FIQ | I_Bit | F_Bit     /* No interrupts */
    134114    MSR     cpsr, r0
    135     ldr     r1, =_fiq_stack_size
    136     LDR     sp, =_fiq_stack
     115    ldr     r1, =bsp_stack_fiq_size
     116    LDR     sp, =bsp_stack_fiq_begin
    137117    add     sp, sp, r1
    138118    sub     sp, sp, #0x64
     
    141121    MOV     r0, #Mode_ABT | I_Bit | F_Bit     /* No interrupts */
    142122    MSR     cpsr, r0
    143     ldr     r1, =_abt_stack_size
    144     LDR     sp, =_abt_stack
     123    ldr     r1, =bsp_stack_abt_size
     124    LDR     sp, =bsp_stack_abt_begin
    145125    add     sp, sp, r1
    146126    sub     sp, sp, #0x64
     
    149129    MOV     r0, #Mode_SVC | I_Bit | F_Bit     /* No interrupts */
    150130    MSR     cpsr, r0
    151     ldr     r1, =_svc_stack_size
    152     LDR     sp, =_svc_stack
     131    ldr     r1, =bsp_stack_svc_size
     132    LDR     sp, =bsp_stack_svc_begin
    153133    add     sp, sp, r1
    154134    sub     sp, sp, #0x64
  • c/src/lib/libbsp/arm/edb7312/startup/linkcmds

    rdda95953 r8d992be  
    1 /*
    2  * Cirrus EP7312 linker script
    3  *
    4  * Copyright (c) 2002 by Jay Monkman <jtm@smoothsmoothie.com>
    5  *     
    6  *  The license and distribution terms for this file may be
    7  *  found in the file LICENSE in this distribution or at
    8  *
    9  *  http://www.rtems.com/license/LICENSE.
    10  *
    11  *
    12  *  $Id$
    13 */
    14 
    15 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
    16               "elf32-littlearm")
    17 OUTPUT_ARCH(arm)
    18 ENTRY(_start)
    19 
    20 
    211MEMORY {
    22         sdram : ORIGIN = 0x00000000, LENGTH = 16M
    23         regs  : ORIGIN = 0x80000000, LENGTH = 1M
     2        SDRAM : ORIGIN = 0x00000000, LENGTH = 16M
     3        NIRVANA : ORIGIN = 0, LENGTH = 0
    244}
    255
    26 /*
    27  * Declare some sizes.
    28  */
     6REGION_ALIAS ("REGION_START", SDRAM);
     7REGION_ALIAS ("REGION_VECTOR", SDRAM);
     8REGION_ALIAS ("REGION_TEXT", SDRAM);
     9REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
     10REGION_ALIAS ("REGION_RODATA", SDRAM);
     11REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
     12REGION_ALIAS ("REGION_DATA", SDRAM);
     13REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
     14REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
     15REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
     16REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
     17REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
     18REGION_ALIAS ("REGION_BSS", SDRAM);
     19REGION_ALIAS ("REGION_WORK", SDRAM);
     20REGION_ALIAS ("REGION_STACK", SDRAM);
    2921
    30 _sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x00000000;
    31 _sdram_size = DEFINED(_sdram_size) ? _sdram_size : 16M;
     22bsp_vector_table_in_start_section = 1;
    3223
    33 RamBase = _sdram_base;
    34 RamSize = _sdram_size;
    35 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
    36 
    37 _irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
    38 _fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
    39 _abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0;
    40 _svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
    41 
    42 
    43 
    44 /* Do we need any of these for elf?
    45    __DYNAMIC = 0;    */
    46 
    47 SECTIONS
    48 {
    49   .base :
    50   {
    51     _sram_base = .;
    52     arm_exception_table = .;   
    53 
    54     arm_reset_vect    = .;     /* 0x00 */
    55     . += 4;
    56 
    57     arm_undef_vect    = .;     /* 0x04 */
    58     . += 4;
    59 
    60     arm_swi_vect      = .;     /* 0x08 */
    61     . += 4;
    62 
    63     arm_iabrt_vect    = .;     /* 0x0c */
    64     . += 4;
    65 
    66     arm_dabrt_vect    = .;     /* 0x10 */
    67     . += 4;
    68 
    69     /* no vector here */
    70     . += 4;
    71 
    72     arm_irq_vect      = .;     /* 0x18 */
    73     . += 4;
    74 
    75     arm_fiq_vect      = .;     /* 0x1c */
    76     . += 4;
    77                               /* FIXME: */
    78     fiq_vect_table    = .;    /* this and irq_vector_table should be swapped */
    79     . += (32 * 4);
    80 
    81     irq_vector_table = .;
    82     . += (32 * 4);     
    83 
    84   } > sdram
    85 
    86   .init          :
    87   {
    88     KEEP (*(.init))
    89   } > sdram   /*=0*/
    90 
    91   .text      :
    92   {
    93         _text_start = .;
    94          CREATE_OBJECT_SYMBOLS
    95         *(.text)
    96         *(.text.*)
    97 
    98         /*
    99          * Special FreeBSD sysctl sections.
    100          */
    101         . = ALIGN (16);
    102         __start_set_sysctl_set = .;
    103         *(set_sysctl_*);
    104         __stop_set_sysctl_set = ABSOLUTE(.);
    105         *(set_domain_*);
    106         *(set_pseudo_*);
    107 
    108         /* .gnu.warning sections are handled specially by elf32.em.  */
    109         *(.gnu.warning)
    110         *(.gnu.linkonce.t*)
    111         *(.glue_7)
    112         *(.glue_7t)
    113 
    114         /* I think these come from the ld docs: */     
    115         ___CTOR_LIST__ = .;
    116         LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
    117         *(.ctors)
    118         LONG(0)
    119         ___CTOR_END__ = .;
    120         ___DTOR_LIST__ = .;
    121         LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
    122         *(.dtors)
    123         LONG(0)
    124         ___DTOR_END__ = .;
    125 
    126         _etext = .;
    127         PROVIDE (etext = .);
    128   } > sdram 
    129 
    130   .fini      :
    131   {
    132     KEEP (*(.fini))
    133   } > sdram  /*=0*/
    134 
    135   .data :
    136   {
    137     *(.data)
    138     *(.data.*)
    139     *(.gnu.linkonce.d*)
    140     *(.jcr)
    141     SORT(CONSTRUCTORS)
    142     _edata = .;
    143   } > sdram
    144 
    145   .eh_frame : { *(.eh_frame) } > sdram
    146   .data1   : { *(.data1) } > sdram
    147   .eh_frame : { *(.eh_frame) } > sdram
    148   .gcc_except_table : { *(.gcc_except_table*) } > sdram
    149 
    150   .rodata :
    151   {
    152     *(.rodata)
    153     *(.rodata.*)
    154     *(.gnu.linkonce.r*)
    155   } > sdram
    156 
    157   .bss       :
    158   {
    159         _bss_start_ = .;
    160         _clear_start = .;
    161         *(.bss)
    162         *(.bss.*)
    163         *(.gnu.linkonce.b.*)
    164         *(COMMON)
    165         . = ALIGN(64);
    166         _clear_end = .;
    167 
    168         . = ALIGN (256);
    169         _abt_stack = .;
    170         . += _abt_stack_size;
    171 
    172         . = ALIGN (256);
    173         _irq_stack = .;
    174         . += _irq_stack_size;
    175 
    176         . = ALIGN (256);
    177         _fiq_stack = .;
    178         . += _fiq_stack_size;
    179 
    180         . = ALIGN (256);
    181         _svc_stack = .;
    182         . += _svc_stack_size;
    183 
    184         _bss_end_ = .;
    185         _end = .;
    186         __end = .;
    187 
    188 
    189         . = ALIGN (1024);
    190         _bss_free_start = .;
    191         WorkAreaBase = .;
    192 
    193   } > sdram
    194 
    195 /*
    196   .regs :
    197   {
    198         ep7312_regs_base = .;
    199         ep7312_regs = .;
    200         . += 8192;
    201   } > regs
    202 */
    203 
    204 
    205 /* Debugging stuff follows? */
    206 
    207   /* Stabs debugging sections.  */
    208   .stab 0 : { *(.stab) }
    209   .stabstr 0 : { *(.stabstr) }
    210   .stab.excl 0 : { *(.stab.excl) }
    211   .stab.exclstr 0 : { *(.stab.exclstr) }
    212   .stab.index 0 : { *(.stab.index) }
    213   .stab.indexstr 0 : { *(.stab.indexstr) }
    214   .comment 0 : { *(.comment) }
    215   /* DWARF debug sections.
    216      Symbols in the DWARF debugging sections are relative to the beginning
    217      of the section so we begin them at 0.  */
    218   /* DWARF 1 */
    219   .debug          0 : { *(.debug) }
    220   .line           0 : { *(.line) }
    221   /* GNU DWARF 1 extensions */
    222   .debug_srcinfo  0 : { *(.debug_srcinfo) }
    223   .debug_sfnames  0 : { *(.debug_sfnames) }
    224   /* DWARF 1.1 and DWARF 2 */
    225   .debug_aranges  0 : { *(.debug_aranges) }
    226   .debug_pubnames 0 : { *(.debug_pubnames) }
    227   /* DWARF 2 */
    228   .debug_info     0 : { *(.debug_info) }
    229   .debug_abbrev   0 : { *(.debug_abbrev) }
    230   .debug_line     0 : { *(.debug_line) }
    231   .debug_frame    0 : { *(.debug_frame) }
    232   .debug_str      0 : { *(.debug_str) }
    233   .debug_loc      0 : { *(.debug_loc) }
    234   .debug_macinfo  0 : { *(.debug_macinfo) }
    235   /* SGI/MIPS DWARF 2 extensions */
    236   .debug_weaknames 0 : { *(.debug_weaknames) }
    237   .debug_funcnames 0 : { *(.debug_funcnames) }
    238   .debug_typenames 0 : { *(.debug_typenames) }
    239   .debug_varnames  0 : { *(.debug_varnames) }
    240   /*.stack 0x80000 : { _stack = .; *(.stack) }*/
    241   /* These must appear regardless of  .  */
    242 }
    243 
     24INCLUDE linkcmds.armv4
  • c/src/lib/libbsp/arm/gdbarmsim/ChangeLog

    rdda95953 r8d992be  
     12010-12-03      Sebastian Huber <sebastian.huber@embedded-brains.de>
     2
     3        * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
     4        file.
     5
    162010-08-15      Joel Sherrill <joel.sherrilL@OARcorp.com>
    27
  • c/src/lib/libbsp/arm/gdbarmsim/bsp_specs

    rdda95953 r8d992be  
    88
    99*link:
    10 %{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
     10%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
    1111
    1212*endfile:
    1313%{!qrtems: *(old_endfiles)} %{qrtems: crtend.o%s crtn.o%s }
    14 
  • c/src/lib/libbsp/arm/gdbarmsim/start/start.S

    rdda95953 r8d992be  
    88#include <newlib.h>
    99#include <bsp/swi.h>
     10#include <bsp/linker-symbols.h>
    1011
    1112/* ANSI concatenation macros.  */
     
    376377#endif
    377378.LC1:
    378         .word   __bss_start__
     379        .word   bsp_section_bss_begin
    379380.LC2:
    380         .word   __clear_end__ /* __bss_end__ */
     381        .word   bsp_section_bss_end
    381382#ifdef __USES_INITFINI__
    382383.Lfini:
  • c/src/lib/libbsp/arm/gdbarmsim/startup/linkcmds

    rdda95953 r8d992be  
    1 /*
    2  *  Cogent CSB336 Linker script
    3  *
    4  *  Copyright (c) 2004 by Cogent Computer Systems
    5  *  Written by Jay Monkman <jtm@lopingdog.com>
    6  *
    7  *  The license and distribution terms for this file may be
    8  *  found in the file LICENSE in this distribution or at
    9  *
    10  *  http://www.rtems.com/license/LICENSE.
    11  *
    12  *  $Id$
    13  */
    14 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
    15               "elf32-littlearm")
    16 OUTPUT_ARCH(arm)
    17 ENTRY(_start)
    18 /* SEARCH_DIR(/usr/local/rtems-arm-dev-tools/arm-rtems/lib); */
    19 
    20 
    211MEMORY {
    22         sdram : ORIGIN = 0x00000000, LENGTH = 4M
     2        RAM : ORIGIN = 0x00000000, LENGTH = 4M
     3        NIRVANA : ORIGIN = 0, LENGTH = 0
    234}
    245
    25 /*
    26  * Declare some sizes.
    27  */
     6REGION_ALIAS ("REGION_START", RAM);
     7REGION_ALIAS ("REGION_VECTOR", RAM);
     8REGION_ALIAS ("REGION_TEXT", RAM);
     9REGION_ALIAS ("REGION_TEXT_LOAD", RAM);
     10REGION_ALIAS ("REGION_RODATA", RAM);
     11REGION_ALIAS ("REGION_RODATA_LOAD", RAM);
     12REGION_ALIAS ("REGION_DATA", RAM);
     13REGION_ALIAS ("REGION_DATA_LOAD", RAM);
     14REGION_ALIAS ("REGION_FAST_TEXT", RAM);
     15REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM);
     16REGION_ALIAS ("REGION_FAST_DATA", RAM);
     17REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
     18REGION_ALIAS ("REGION_BSS", RAM);
     19REGION_ALIAS ("REGION_WORK", RAM);
     20REGION_ALIAS ("REGION_STACK", RAM);
    2821
    29 /* The base for SDRAM is set to umon's APPRAMBASE */
    30 _sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x0;
    31 _sdram_size = DEFINED(_sdram_size) ? _sdram_size : 4M;
    32 
    33 RamBase = _sdram_base;
    34 RamSize = _sdram_size;
    35 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
    36 
    37 _irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
    38 _fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
    39 _abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x400;
    40 _undef_stack_size = DEFINED(_undef_stack_size) ? _undef_stack_size : 0x400;
    41 _svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
    42 
    43 
    44 
    45 /* Do we need any of these for elf?
    46    __DYNAMIC = 0;    */
    47 
    48 SECTIONS
    49 {
    50   .base :
    51   {
    52     arm_exception_table = .;   
    53 
    54     arm_reset_vect    = .;     /* 0x00 */
    55     . += 4;
    56 
    57     arm_undef_vect    = .;     /* 0x04 */
    58     . += 4;
    59 
    60     arm_swi_vect      = .;     /* 0x08 */
    61     . += 4;
    62 
    63     arm_iabrt_vect    = .;     /* 0x0c */
    64     . += 4;
    65 
    66     arm_dabrt_vect    = .;     /* 0x10 */
    67     . += 4;
    68 
    69     /* no vector here */
    70     . += 4;
    71 
    72     arm_irq_vect      = .;     /* 0x18 */
    73     . += 4;
    74 
    75     arm_fiq_vect      = .;     /* 0x1c */
    76     . += 4;
    77                               /* FIXME: */
    78 
    79     rtems_vector_table = .;
    80     . += (8 * 4);                     /* 8 ARM interrupts */
    81        
    82     . = ALIGN (0x100);
    83 
    84 
    85   } > sdram
    86 
    87   .text      :
    88   {
    89         . = 0x8000;
    90         _text_start = .;
    91          CREATE_OBJECT_SYMBOLS
    92         *(.text)
    93         *(.text.*)
    94 
    95         /*
    96          * Special FreeBSD sysctl sections.
    97          */
    98         . = ALIGN (16);
    99         __start_set_sysctl_set = .;
    100         *(set_sysctl_*);
    101         __stop_set_sysctl_set = ABSOLUTE(.);
    102         *(set_domain_*);
    103         *(set_pseudo_*);
    104 
    105         /* .gnu.warning sections are handled specially by elf32.em.  */
    106         *(.gnu.warning)
    107         *(.gnu.linkonce.t*)
    108         *(.glue_7)
    109         *(.glue_7t)
    110 
    111         /* I think these come from the ld docs: */     
    112         ___CTOR_LIST__ = .;
    113         LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
    114         *(.ctors)
    115         LONG(0)
    116         ___CTOR_END__ = .;
    117         ___DTOR_LIST__ = .;
    118         LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
    119         *(.dtors)
    120         LONG(0)
    121         ___DTOR_END__ = .;
    122 
    123         _etext = .;
    124         PROVIDE (etext = .);
    125   } > sdram 
    126 
    127   .init          :
    128   {
    129     KEEP (*(.init))
    130   } > sdram   /*=0*/
    131 
    132   .fini      :
    133   {
    134     KEEP (*(.fini))
    135   } > sdram  /*=0*/
    136 
    137   .data :
    138   {
    139     *(.data)
    140     *(.data.*)
    141     *(.gnu.linkonce.d*)
    142     *(.jcr)
    143     SORT(CONSTRUCTORS)
    144     _edata = .;
    145   } > sdram
    146 
    147   .eh_frame : { *(.eh_frame) } > sdram
    148   .data1   : { *(.data1) } > sdram
    149   .eh_frame : { *(.eh_frame) } > sdram
    150   .gcc_except_table : { *(.gcc_except_table*) } > sdram
    151 
    152   .rodata :
    153   {
    154     *(.rodata)
    155     *(.rodata.*)
    156     *(.gnu.linkonce.r*)
    157   } > sdram
    158 
    159   .bss       :
    160   {
    161         __bss_start__ = .;
    162         _bss_start_ = .;
    163         _clear_start = .;
    164         *(.bss)
    165         *(.bss.*)
    166         *(.gnu.linkonce.b.*)
    167         *(COMMON)
    168         . = ALIGN(64);
    169         _clear_end = .;
    170 
    171         . = ALIGN (256);
    172         _abt_stack = .;
    173         . += _abt_stack_size;
    174 
    175         . = ALIGN (256);
    176         _undef_stack = .;
    177         . += _undef_stack_size;
    178 
    179         . = ALIGN (256);
    180         _irq_stack = .;
    181         . += _irq_stack_size;
    182 
    183         . = ALIGN (256);
    184         _fiq_stack = .;
    185         . += _fiq_stack_size;
    186 
    187         . = ALIGN (256);
    188         _svc_stack = .;
    189         . += _svc_stack_size;
    190 
    191 /*
    192  * Ideally, the MMU's translation table would be in SRAM. But we
    193  * don't have any. If we don't use more regions than TLB entries (64),
    194  * the lookup will only happen once for each region.
    195  */
    196         . = ALIGN (16 * 1024);
    197         _ttbl_base = .;
    198         . += (16 * 1024);
    199 
    200         . = ALIGN (1024);
    201         _bss_free_start = .;
    202         WorkAreaBase = .;
    203 
    204         . = RamSize + RamBase - 1;
    205         __clear_end__ = .;
    206         __bss_end__ = .;
    207         _bss_end_ = .;
    208         _end = .;
    209         __end = .;
    210 
    211   } > sdram
    212 
    213 
    214 /* Debugging stuff follows? */
    215 
    216   /* Stabs debugging sections.  */
    217   .stab 0 : { *(.stab) }
    218   .stabstr 0 : { *(.stabstr) }
    219   .stab.excl 0 : { *(.stab.excl) }
    220   .stab.exclstr 0 : { *(.stab.exclstr) }
    221   .stab.index 0 : { *(.stab.index) }
    222   .stab.indexstr 0 : { *(.stab.indexstr) }
    223   .comment 0 : { *(.comment) }
    224   /* DWARF debug sections.
    225      Symbols in the DWARF debugging sections are relative to the beginning
    226      of the section so we begin them at 0.  */
    227   /* DWARF 1 */
    228   .debug          0 : { *(.debug) }
    229   .line           0 : { *(.line) }
    230   /* GNU DWARF 1 extensions */
    231   .debug_srcinfo  0 : { *(.debug_srcinfo) }
    232   .debug_sfnames  0 : { *(.debug_sfnames) }
    233   /* DWARF 1.1 and DWARF 2 */
    234   .debug_aranges  0 : { *(.debug_aranges) }
    235   .debug_pubnames 0 : { *(.debug_pubnames) }
    236   /* DWARF 2 */
    237   .debug_info     0 : { *(.debug_info) }
    238   .debug_abbrev   0 : { *(.debug_abbrev) }
    239   .debug_line     0 : { *(.debug_line) }
    240   .debug_frame    0 : { *(.debug_frame) }
    241   .debug_str      0 : { *(.debug_str) }
    242   .debug_loc      0 : { *(.debug_loc) }
    243   .debug_macinfo  0 : { *(.debug_macinfo) }
    244   /* SGI/MIPS DWARF 2 extensions */
    245   .debug_weaknames 0 : { *(.debug_weaknames) }
    246   .debug_funcnames 0 : { *(.debug_funcnames) }
    247   .debug_typenames 0 : { *(.debug_typenames) }
    248   .debug_varnames  0 : { *(.debug_varnames) }
    249   /*.stack 0x80000 : { _stack = .; *(.stack) }*/
    250   /* These must appear regardless of  .  */
    251 }
    252 
     22INCLUDE linkcmds.armv4
  • c/src/lib/libbsp/arm/gumstix/ChangeLog

    rdda95953 r8d992be  
     12010-12-03      Sebastian Huber <sebastian.huber@embedded-brains.de>
     2
     3        * bsp_specs, start/start.S, startup/linkcmds: Use linker command base
     4        file.
     5
    162010-05-14      Joel Sherrill <joel.sherrilL@OARcorp.com>
    27
  • c/src/lib/libbsp/arm/gumstix/bsp_specs

    rdda95953 r8d992be  
    88
    99*link:
    10 %{!qrtems: %(old_link)} %{qrtems: -dp -Bstatic -N}
     10%{!qrtems: %(old_link)} %{qrtems: -dc -dp -N}
    1111
    1212*endfile:
  • c/src/lib/libbsp/arm/gumstix/start/start.S

    rdda95953 r8d992be  
    1010 */
    1111
     12#include <bsp/linker-symbols.h>
    1213
    1314/* Some standard definitions...*/
     
    3940
    4041        /* zero the bss */
    41         ldr     r1, =_bss_end_
    42         ldr     r0, =_bss_start_
     42        ldr     r1, =bsp_section_bss_end
     43        ldr     r0, =bsp_section_bss_begin
    4344
    4445_bss_init:
     
    5253        mov     r0, #(PSR_MODE_IRQ | PSR_I | PSR_F)     /* No interrupts */
    5354        msr     cpsr, r0
    54         ldr     r1, =_irq_stack_size
    55         ldr     sp, =_irq_stack
     55        ldr     r1, =bsp_stack_irq_size
     56        ldr     sp, =bsp_stack_irq_begin
    5657        add     sp, sp, r1
    5758
     
    5960        mov     r0, #(PSR_MODE_FIQ | PSR_I | PSR_F)     /* No interrupts */
    6061        msr     cpsr, r0
    61         ldr     r1, =_fiq_stack_size
    62         ldr     sp, =_fiq_stack
     62        ldr     r1, =bsp_stack_fiq_size
     63        ldr     sp, =bsp_stack_fiq_begin
    6364        add     sp, sp, r1
    6465
     
    6667        mov     r0, #(PSR_MODE_ABT | PSR_I | PSR_F)     /* No interrupts */
    6768        msr     cpsr, r0
    68         ldr     r1, =_abt_stack_size
    69         ldr     sp, =_abt_stack
     69        ldr     r1, =bsp_stack_abt_size
     70        ldr     sp, =bsp_stack_abt_begin
    7071        add     sp, sp, r1
    7172
     
    7374        mov     r0, #(PSR_MODE_SVC | PSR_I | PSR_F)     /* No interrupts */
    7475        msr     cpsr, r0
    75         ldr     r1, =_svc_stack_size
    76         ldr     sp, =_svc_stack
     76        ldr     r1, =bsp_stack_und_size
     77        ldr     sp, =bsp_stack_und_begin
    7778        add     sp, sp, r1
    7879        sub     sp, sp, #0x64
  • c/src/lib/libbsp/arm/gumstix/startup/linkcmds

    rdda95953 r8d992be  
    1 /*
    2  * GUMSTIX linkcmd by Yang Xi <hiyangxi@gmail.com>. Borrow form CSB337 linkcmd.
    3  *
    4  *  The license and distribution terms for this file may be
    5  *  found in the file LICENSE in this distribution or at
    6  *  http://www.rtems.com/license/LICENSE.
    7  *
    8  *  $Id$
    9  */
    10 
    11 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
    12               "elf32-littlearm")
    13 OUTPUT_ARCH(arm)
    14 ENTRY(_start)
    15 
    16 MEMORY
    17 {
    18         sdram : ORIGIN = 0xA0000000, LENGTH = 64M
    19         sram  : ORIGIN = 0x00000000, LENGTH = 16K
     1MEMORY {
     2        SDRAM_MMU : ORIGIN = 0xa0000000, LENGTH = 16k
     3        SDRAM : ORIGIN = 0xa0004000, LENGTH = 64M - 16k
     4        SRAM : ORIGIN = 0x00000000, LENGTH = 16k
     5        NIRVANA : ORIGIN = 0, LENGTH = 0
    206}
    217
    22 /*
    23  * Declare some sizes.
    24  */
    25 _sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0xA0000000;
    26 _sdram_size = DEFINED(_sdram_size) ? _sdram_size : 64M;
     8REGION_ALIAS ("REGION_START", SDRAM);
     9REGION_ALIAS ("REGION_VECTOR", SDRAM);
     10REGION_ALIAS ("REGION_TEXT", SDRAM);
     11REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
     12REGION_ALIAS ("REGION_RODATA", SDRAM);
     13REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
     14REGION_ALIAS ("REGION_DATA", SDRAM);
     15REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
     16REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
     17REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
     18REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
     19REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
     20REGION_ALIAS ("REGION_BSS", SDRAM);
     21REGION_ALIAS ("REGION_WORK", SDRAM);
     22REGION_ALIAS ("REGION_STACK", SDRAM);
    2723
    28 RamBase = _sdram_base;
    29 RamSize = _sdram_size;
    30 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
     24_ttbl_base = ORIGIN (SDRAM_MMU);
    3125
    32 _sram_base = DEFINED(_sram_base) ? _sram_base : 0x00000000;
    33 _sram_size = DEFINED(_sram_size) ? _sram_size : 16K;
    34 
    35 
    36 
    37 _irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x1000;
    38 _fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x400;
    39 _abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x100;
    40 _svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x1000;
    41 
    42 
    43 
    44 /* Do we need any of these for elf?
    45    __DYNAMIC = 0;    */
    46 
    47 SECTIONS
    48 {
    49     .base :
    50     {
    51        
    52         arm_exception_table = .;   
    53         . += 64;
    54     } > sdram
    55    
    56 /*    } > sram*/
    57 
    58        
    59     .init          :
    60     {
    61         KEEP (*(.init))
    62     } > sdram   /*=0*/
    63 
    64     .text      :
    65     {
    66         _text_start = .;
    67          CREATE_OBJECT_SYMBOLS
    68         *(.text)
    69         *(.text.*)
    70 
    71         /*
    72          * Special FreeBSD sysctl sections.
    73          */
    74         . = ALIGN (16);
    75         __start_set_sysctl_set = .;
    76         *(set_sysctl_*);
    77         __stop_set_sysctl_set = ABSOLUTE(.);
    78         *(set_domain_*);
    79         *(set_pseudo_*);
    80 
    81         /* .gnu.warning sections are handled specially by elf32.em.  */
    82         *(.gnu.warning)
    83         *(.gnu.linkonce.t*)
    84         *(.glue_7)
    85         *(.glue_7t)
    86 
    87         /* I think these come from the ld docs: */     
    88         ___CTOR_LIST__ = .;
    89         LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
    90         *(.ctors)
    91         LONG(0)
    92         ___CTOR_END__ = .;
    93         ___DTOR_LIST__ = .;
    94         LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
    95         *(.dtors)
    96         LONG(0)
    97         ___DTOR_END__ = .;
    98 
    99         _etext = .;
    100         PROVIDE (etext = .);
    101     } > sdram 
    102 
    103     .fini      :
    104     {
    105         KEEP (*(.fini))
    106     } > sdram  /*=0*/
    107 
    108     .data :
    109     {
    110         *(.data)
    111         *(.data.*)
    112         *(.gnu.linkonce.d*)
    113         *(.jcr)
    114         SORT(CONSTRUCTORS)
    115         _edata = .;
    116     } > sdram
    117 
    118     .eh_frame : { *(.eh_frame) } > sdram
    119     .data1   : { *(.data1) } > sdram
    120     .eh_frame : { *(.eh_frame) } > sdram
    121     .gcc_except_table : { *(.gcc_except_table) } > sdram
    122 
    123     .rodata :
    124     {
    125       *(.rodata)
    126       *(.rodata.*)
    127       *(.gnu.linkonce.r*)
    128     } > sdram
    129 
    130     .bss       :
    131     {
    132         _bss_start_ = .;
    133         _clear_start = .;
    134         *(.bss)
    135         *(.bss.*)
    136         *(.gnu.linkonce.b.*)
    137         *(COMMON)
    138         . = ALIGN(64);
    139         _clear_end = .;
    140 
    141         . = ALIGN (256);
    142         _abt_stack = .;
    143         . += _abt_stack_size;
    144 
    145         . = ALIGN (256);
    146         _irq_stack = .;
    147         . += _irq_stack_size;
    148 
    149         . = ALIGN (256);
    150         _fiq_stack = .;
    151         . += _fiq_stack_size;
    152 
    153         . = ALIGN (256);
    154         _svc_stack = .;
    155         . += _svc_stack_size;
    156 
    157         _bss_end_ = .;
    158         _end = .;
    159         __end = .;
    160 
    161 /*
    162  * Ideally, the MMU's translation table would be in SRAM. But we need
    163  * 16K which is the size of SRAM. If we do the mapping right, the TLB
    164  * should be big enough that to hold all the translations that matter,
    165  * so keeping the table in SDRAM won't be a problem.
    166  */
    167         . = ALIGN (16 * 1024);
    168           _ttbl_base = .;
    169           . += (16 * 1024);
    170 
    171 
    172         . = ALIGN (1024);
    173         _bss_free_start = .;
    174         WorkAreaBase = .;
    175 
    176     } > sdram
    177 
    178 
    179 /* Debugging stuff follows? */
    180 
    181     /* Stabs debugging sections.  */
    182     .stab 0 : { *(.stab) }
    183     .stabstr 0 : { *(.stabstr) }
    184     .stab.excl 0 : { *(.stab.excl) }
    185     .stab.exclstr 0 : { *(.stab.exclstr) }
    186     .stab.index 0 : { *(.stab.index) }
    187     .stab.indexstr 0 : { *(.stab.indexstr) }
    188     .comment 0 : { *(.comment) }
    189     /* DWARF debug sections.
    190        Symbols in the DWARF debugging sections are relative to the beginning
    191        of the section so we begin them at 0.  */
    192     /* DWARF 1 */
    193     .debug          0 : { *(.debug) }
    194     .line           0 : { *(.line) }
    195     /* GNU DWARF 1 extensions */
    196     .debug_srcinfo  0 : { *(.debug_srcinfo) }
    197     .debug_sfnames  0 : { *(.debug_sfnames) }
    198     /* DWARF 1.1 and DWARF 2 */
    199     .debug_aranges  0 : { *(.debug_aranges) }
    200     .debug_pubnames 0 : { *(.debug_pubnames) }
    201     /* DWARF 2 */
    202     .debug_info     0 : { *(.debug_info) }
    203     .debug_abbrev   0 : { *(.debug_abbrev) }
    204     .debug_line     0 : { *(.debug_line) }
    205     .debug_frame    0 : { *(.debug_frame) }
    206     .debug_str      0 : { *(.debug_str) }
    207     .debug_loc      0 : { *(.debug_loc) }
    208     .debug_macinfo  0 : { *(.debug_macinfo) }
    209     /* SGI/MIPS DWARF 2 extensions */
    210     .debug_weaknames 0 : { *(.debug_weaknames) }
    211     .debug_funcnames 0 : { *(.debug_funcnames) }
    212     .debug_typenames 0 : { *(.debug_typenames) }
    213     .debug_varnames  0 : { *(.debug_varnames) }
    214 /*    .stack 0x80000 : { _stack = .; *(.stack) }*/
    215   /* These must appear regardless of  .  */
    216 }
    217 
     26INCLUDE linkcmds.armv4
Note: See TracChangeset for help on using the changeset viewer.