Changeset dda95953 in rtems


Ignore:
Timestamp:
Dec 3, 2010, 10:51:54 AM (10 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
8d992be
Parents:
4651508
Message:

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

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

Legend:

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

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

    r4651508 rdda95953  
    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/csb337/start/start.S

    r4651508 rdda95953  
    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_SVC | PSR_I | PSR_F)     /* No interrupts */
    7678        msr     cpsr, r0
    77         ldr     r1, =_svc_stack_size
    78         ldr     sp, =_svc_stack
     79        ldr     r1, =bsp_stack_svc_size
     80        ldr     sp, =bsp_stack_svc_begin
    7981        add     sp, sp, r1
    8082        sub     sp, sp, #0x64
  • c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb337

    r4651508 rdda95953  
    1 /*
    2  *  Cogent CSB337 Linker script
    3  *
    4  *  Copyright (c) 2004 by Jay Monkman <jtm@lopingdog.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  *  http://www.rtems.com/license/LICENSE.
    9  *
    10  *  $Id$
    11  */
    12 
    13 OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
    14               "elf32-littlearm")
    15 OUTPUT_ARCH(arm)
    16 ENTRY(_start)
    17 
    18 MEMORY
    19 {
    20         sdram : ORIGIN = 0x20100000, LENGTH = 15M
    21         sram  : ORIGIN = 0x00200000, LENGTH = 16K
     1MEMORY {
     2        SDRAM_MMU : ORIGIN = 0x20100000, LENGTH = 16k
     3        SDRAM : ORIGIN = 0x20104000, LENGTH = 15M - 16k
     4        SRAM : ORIGIN = 0x00200000, LENGTH = 16k
     5        NIRVANA : ORIGIN = 0, LENGTH = 0
    226}
    237
    24 /*
    25  * Declare some sizes.
    26  */
    27 _sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x20100000;
    28 _sdram_size = DEFINED(_sdram_size) ? _sdram_size : 15M;
     8REGION_ALIAS ("REGION_START", SDRAM);
     9REGION_ALIAS ("REGION_VECTOR", SRAM);
     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);
    2923
    30 RamBase = _sdram_base;
    31 RamSize = _sdram_size;
    32 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
     24_ttbl_base = ORIGIN (SDRAM_MMU);
    3325
    34 _sram_base = DEFINED(_sram_base) ? _sram_base : 0x00000000;
    35 _sram_size = DEFINED(_sram_size) ? _sram_size : 16K;
    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         _sram_base = .;
    52 
    53         /* reserve room for the vectors and function pointers */
    54         arm_exception_table = .;   
    55         . += 64;
    56 
    57         /* 256 byte aligned rx buffer header array */
    58         . = ALIGN (0x100);
    59         at91rm9200_emac_rxbuf_hdrs = .;
    60 
    61         /* 1 transmit buffer, 0x600 size */
    62         . += (0x100);
    63         at91rm9200_emac_txbuf = .;
    64         . += (0x600);
    65 
    66         /* 8 receive buffers, 0x600 each */
    67         at91rm9200_emac_rxbufs = .;
    68         . += (0x600 * 8);
    69 
    70     } > sram
    71 
    72     .text      :
    73     {
    74         _text_start = .;
    75          CREATE_OBJECT_SYMBOLS
    76         *(.text)
    77         *(.text.*)
    78 
    79         /*
    80          * Special FreeBSD sysctl sections.
    81          */
    82         . = ALIGN (16);
    83         __start_set_sysctl_set = .;
    84         *(set_sysctl_*);
    85         __stop_set_sysctl_set = ABSOLUTE(.);
    86         *(set_domain_*);
    87         *(set_pseudo_*);
    88 
    89         /* .gnu.warning sections are handled specially by elf32.em.  */
    90         *(.gnu.warning)
    91         *(.gnu.linkonce.t*)
    92         *(.glue_7)
    93         *(.glue_7t)
    94 
    95         /* I think these come from the ld docs: */
    96         ___CTOR_LIST__ = .;
    97         LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
    98         *(.ctors)
    99         LONG(0)
    100         ___CTOR_END__ = .;
    101         ___DTOR_LIST__ = .;
    102         LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
    103         *(.dtors)
    104         LONG(0)
    105         ___DTOR_END__ = .;
    106 
    107         _etext = .;
    108         PROVIDE (etext = .);
    109     } > sdram 
    110 
    111     .init          :
    112     {
    113         KEEP (*(.init))
    114     } > sdram   /*=0*/
    115 
    116     .fini      :
    117     {
    118         KEEP (*(.fini))
    119     } > sdram  /*=0*/
    120 
    121     .data :
    122     {
    123         *(.data)
    124         *(.data.*)
    125         *(.gnu.linkonce.d*)
    126         *(.jcr)
    127         SORT(CONSTRUCTORS)
    128         _edata = .;
    129     } > sdram
    130 
    131     .eh_frame : { *(.eh_frame) } > sdram
    132     .data1   : { *(.data1) } > sdram
    133     .eh_frame : { *(.eh_frame) } > sdram
    134     .gcc_except_table : { *(.gcc_except_table*) } > sdram
    135 
    136     .rodata :
    137     {
    138       *(.rodata)
    139       *(.rodata.*)
    140       *(.gnu.linkonce.r*)
    141     } > sdram
    142 
    143     .bss       :
    144     {
    145         _bss_start_ = .;
    146         _clear_start = .;
    147         *(.bss)
    148         *(.bss.*)
    149         *(.gnu.linkonce.b.*)
    150         *(COMMON)
    151         . = ALIGN(64);
    152         _clear_end = .;
    153 
    154         . = ALIGN (256);
    155         _abt_stack = .;
    156         . += _abt_stack_size;
    157 
    158         . = ALIGN (256);
    159         _irq_stack = .;
    160         . += _irq_stack_size;
    161 
    162         . = ALIGN (256);
    163         _fiq_stack = .;
    164         . += _fiq_stack_size;
    165 
    166         . = ALIGN (256);
    167         _svc_stack = .;
    168         . += _svc_stack_size;
    169 
    170         _bss_end_ = .;
    171         _end = .;
    172         __end = .;
    173 
    174 /*
    175  * Ideally, the MMU's translation table would be in SRAM. But we need
    176  * 16K which is the size of SRAM. If we do the mapping right, the TLB
    177  * should be big enough that to hold all the translations that matter,
    178  * so keeping the table in SDRAM won't be a problem.
    179  */
    180         . = ALIGN (16 * 1024);
    181           _ttbl_base = .;
    182           . += (16 * 1024);
    183 
    184 
    185         . = ALIGN (1024);
    186         _bss_free_start = .;
    187         WorkAreaBase = .;
    188 
    189     } > sdram
    190 
    191 
    192 /* Debugging stuff follows? */
    193 
    194     /* Stabs debugging sections.  */
    195     .stab 0 : { *(.stab) }
    196     .stabstr 0 : { *(.stabstr) }
    197     .stab.excl 0 : { *(.stab.excl) }
    198     .stab.exclstr 0 : { *(.stab.exclstr) }
    199     .stab.index 0 : { *(.stab.index) }
    200     .stab.indexstr 0 : { *(.stab.indexstr) }
    201     .comment 0 : { *(.comment) }
    202     /* DWARF debug sections.
    203        Symbols in the DWARF debugging sections are relative to the beginning
    204        of the section so we begin them at 0.  */
    205     /* DWARF 1 */
    206     .debug          0 : { *(.debug) }
    207     .line           0 : { *(.line) }
    208     /* GNU DWARF 1 extensions */
    209     .debug_srcinfo  0 : { *(.debug_srcinfo) }
    210     .debug_sfnames  0 : { *(.debug_sfnames) }
    211     /* DWARF 1.1 and DWARF 2 */
    212     .debug_aranges  0 : { *(.debug_aranges) }
    213     .debug_pubnames 0 : { *(.debug_pubnames) }
    214     /* DWARF 2 */
    215     .debug_info     0 : { *(.debug_info) }
    216     .debug_abbrev   0 : { *(.debug_abbrev) }
    217     .debug_line     0 : { *(.debug_line) }
    218     .debug_frame    0 : { *(.debug_frame) }
    219     .debug_str      0 : { *(.debug_str) }
    220     .debug_loc      0 : { *(.debug_loc) }
    221     .debug_macinfo  0 : { *(.debug_macinfo) }
    222     /* SGI/MIPS DWARF 2 extensions */
    223     .debug_weaknames 0 : { *(.debug_weaknames) }
    224     .debug_funcnames 0 : { *(.debug_funcnames) }
    225     .debug_typenames 0 : { *(.debug_typenames) }
    226     .debug_varnames  0 : { *(.debug_varnames) }
    227 /*    .stack 0x80000 : { _stack = .; *(.stack) }*/
    228   /* These must appear regardless of  .  */
    229 }
    230 
     26INCLUDE linkcmds.armv4
  • c/src/lib/libbsp/arm/csb337/startup/linkcmds.csb637

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