Changeset 305234f7 in rtems for c/src


Ignore:
Timestamp:
03/28/11 08:49:58 (13 years ago)
Author:
Sebastian Huber <sebastian.huber@…>
Branches:
4.11, 5, master
Children:
f437107
Parents:
2e031c64
Message:

2011-03-29 Sebastian Huber <sebastian.huber@…>

  • shared/start/start.S: Default exception handler will result in bsp_reset().
  • shared/startup/linkcmds.base: Move unsupported sections into read-only section. Changed barrier sections.
Location:
c/src/lib/libbsp/arm
Files:
3 edited

Legend:

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

    r2e031c64 r305234f7  
     12011-03-29      Sebastian Huber <sebastian.huber@embedded-brains.de>
     2
     3        * shared/start/start.S: Default exception handler will result in
     4        bsp_reset().
     5        * shared/startup/linkcmds.base: Move unsupported sections into
     6        read-only section.  Changed barrier sections.
     7
    182011-02-11      Ralf Corsépius <ralf.corsepius@rtems.org>
    29
  • c/src/lib/libbsp/arm/shared/start/start.S

    r2e031c64 r305234f7  
    6969handler_addr_undef:
    7070
    71         .word   twiddle
     71        .word   reset
    7272
    7373handler_addr_swi:
    7474
    75         .word   twiddle
     75        .word   reset
    7676
    7777handler_addr_prefetch:
    7878
    79         .word   twiddle
     79        .word   reset
    8080
    8181handler_addr_abort:
    8282
    83         .word   twiddle
     83        .word   reset
    8484
    8585handler_addr_reserved:
    8686
    87         .word   twiddle
     87        .word   reset
    8888
    8989handler_addr_irq:
    9090
    91         .word   twiddle
     91        .word   reset
    9292
    9393handler_addr_fiq:
    9494
    95         .word   twiddle
     95        .word   reset
    9696
    9797/* Start entry */
     
    185185        bl      boot_card
    186186
     187twiddle:
     188
    187189        /* Branch to reset function */
    188190        bl      bsp_reset
    189191
    190         SWITCH_FROM_THUMB_TO_ARM
    191 
    192         /* Spin forever */
    193 
    194 twiddle:
    195 
     192        b       twiddle
     193
     194.arm
     195
     196reset:
     197
     198        SWITCH_FROM_ARM_TO_THUMB        r0
    196199        b       twiddle
    197200
  • c/src/lib/libbsp/arm/shared/startup/linkcmds.base

    r2e031c64 r305234f7  
    3333bsp_vector_table_size = DEFINED (bsp_vector_table_size) ? bsp_vector_table_size : 64;
    3434
    35 bsp_section_vbarrier_align = DEFINED (bsp_section_vbarrier_align) ? bsp_section_vbarrier_align : 1;
     35bsp_section_xbarrier_align = DEFINED (bsp_section_xbarrier_align) ? bsp_section_xbarrier_align : 1;
    3636bsp_section_robarrier_align = DEFINED (bsp_section_robarrier_align) ? bsp_section_robarrier_align : 1;
     37bsp_section_rwbarrier_align = DEFINED (bsp_section_rwbarrier_align) ? bsp_section_rwbarrier_align : 1;
    3738
    3839bsp_stack_align = DEFINED (bsp_stack_align) ? bsp_stack_align : 8;
     
    103104        bsp_vector_table_end = bsp_vector_table_begin + bsp_vector_table_size;
    104105
    105         .vbarrier : {
    106                 . = ALIGN (bsp_section_vbarrier_align);
     106        .xbarrier : {
     107                . = ALIGN (bsp_section_xbarrier_align);
    107108        } > REGION_VECTOR
    108109
    109         .interp : {
     110        .fast_text : {
     111                bsp_section_fast_text_begin = .;
     112                *(.bsp_fast_text)
     113                bsp_section_fast_text_end = .;
     114        } > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
     115        bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
     116        bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
     117        bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
     118
     119        .text : {
    110120                bsp_section_text_begin = .;
    111                 *(.interp)
    112         } > REGION_TEXT AT > REGION_TEXT_LOAD
    113         .note.gnu.build-id : {
    114                 *(.note.gnu.build-id)
    115         } > REGION_TEXT AT > REGION_TEXT_LOAD
    116         .hash : {
    117                 *(.hash)
    118         } > REGION_TEXT AT > REGION_TEXT_LOAD
    119         .gnu.hash : {
    120                 *(.gnu.hash)
    121         } > REGION_TEXT AT > REGION_TEXT_LOAD
    122         .dynsym : {
    123                 *(.dynsym)
    124         } > REGION_TEXT AT > REGION_TEXT_LOAD
    125         .dynstr : {
    126                 *(.dynstr)
    127         } > REGION_TEXT AT > REGION_TEXT_LOAD
    128         .gnu.version : {
    129                 *(.gnu.version)
    130         } > REGION_TEXT AT > REGION_TEXT_LOAD
    131         .gnu.version_d : {
    132                 *(.gnu.version_d)
    133         } > REGION_TEXT AT > REGION_TEXT_LOAD
    134         .gnu.version_r : {
    135                 *(.gnu.version_r)
    136         } > REGION_TEXT AT > REGION_TEXT_LOAD
    137         .rel.dyn : {
    138                 *(.rel.init)
    139                 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
    140                 *(.rel.fini)
    141                 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
    142                 *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
    143                 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
    144                 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
    145                 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
    146                 *(.rel.ctors)
    147                 *(.rel.dtors)
    148                 *(.rel.got)
    149                 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
    150                 PROVIDE_HIDDEN (__rel_iplt_start = .);
    151                 *(.rel.iplt)
    152                 PROVIDE_HIDDEN (__rel_iplt_end = .);
    153                 PROVIDE_HIDDEN (__rela_iplt_start = .);
    154                 PROVIDE_HIDDEN (__rela_iplt_end = .);
    155         } > REGION_TEXT AT > REGION_TEXT_LOAD
    156         .rela.dyn : {
    157                 *(.rela.init)
    158                 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
    159                 *(.rela.fini)
    160                 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
    161                 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
    162                 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
    163                 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
    164                 *(.rela.ctors)
    165                 *(.rela.dtors)
    166                 *(.rela.got)
    167                 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
    168                 PROVIDE_HIDDEN (__rel_iplt_start = .);
    169                 PROVIDE_HIDDEN (__rel_iplt_end = .);
    170                 PROVIDE_HIDDEN (__rela_iplt_start = .);
    171                 *(.rela.iplt)
    172                 PROVIDE_HIDDEN (__rela_iplt_end = .);
    173         } > REGION_TEXT AT > REGION_TEXT_LOAD
    174         .rel.plt : {
    175                 *(.rel.plt)
    176         } > REGION_TEXT AT > REGION_TEXT_LOAD
    177         .rela.plt : {
    178                 *(.rela.plt)
     121                *(.text.unlikely .text.*_unlikely)
     122                *(.text .stub .text.* .gnu.linkonce.t.*)
     123                /* .gnu.warning sections are handled specially by elf32.em.  */
     124                *(.gnu.warning)
     125                *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
    179126        } > REGION_TEXT AT > REGION_TEXT_LOAD
    180127        .init : {
     
    183130        .fini : {
    184131                KEEP (*(.fini))
    185         } > REGION_TEXT AT > REGION_TEXT_LOAD
    186         .plt : {
    187                 *(.plt)
    188         } > REGION_TEXT AT > REGION_TEXT_LOAD
    189         .iplt : {
    190                 *(.iplt)
    191         } > REGION_TEXT AT > REGION_TEXT_LOAD
    192         .text : {
    193                 *(.text.unlikely .text.*_unlikely)
    194                 *(.text .stub .text.* .gnu.linkonce.t.*)
    195                 /* .gnu.warning sections are handled specially by elf32.em.  */
    196                 *(.gnu.warning)
    197                 *(.glue_7t) *(.glue_7) *(.vfp11_veneer) *(.v4_bx)
    198132                bsp_section_text_end = .;
    199133        } > REGION_TEXT AT > REGION_TEXT_LOAD
    200134        bsp_section_text_size = bsp_section_text_end - bsp_section_text_begin;
    201         bsp_section_text_load_begin = LOADADDR (.interp);
     135        bsp_section_text_load_begin = LOADADDR (.text);
    202136        bsp_section_text_load_end = bsp_section_text_load_begin + bsp_section_text_size;
    203137
     138        .robarrier : {
     139                . = ALIGN (bsp_section_robarrier_align);
     140        } > REGION_RODATA
     141
     142        .rodata : {
     143                bsp_section_rodata_begin = .;
     144                *(.rodata .rodata.* .gnu.linkonce.r.*)
     145        } > REGION_RODATA AT > REGION_RODATA_LOAD
    204146        .rodata1 : {
    205                 bsp_section_rodata_begin = .;
    206147                *(.rodata1)
    207148        } > REGION_RODATA AT > REGION_RODATA_LOAD
     
    277218                *(.got.plt) *(.igot.plt) *(.got) *(.igot)
    278219        } > REGION_RODATA AT > REGION_RODATA_LOAD
    279         .rodata : {
    280                 /* Special FreeBSD sysctl sections */
    281                 . = ALIGN (16);
     220        .interp : {
     221                *(.interp)
     222        } > REGION_RODATA AT > REGION_RODATA_LOAD
     223        .note.gnu.build-id : {
     224                *(.note.gnu.build-id)
     225        } > REGION_RODATA AT > REGION_RODATA_LOAD
     226        .hash : {
     227                *(.hash)
     228        } > REGION_RODATA AT > REGION_RODATA_LOAD
     229        .gnu.hash : {
     230                *(.gnu.hash)
     231        } > REGION_RODATA AT > REGION_RODATA_LOAD
     232        .dynsym : {
     233                *(.dynsym)
     234        } > REGION_RODATA AT > REGION_RODATA_LOAD
     235        .dynstr : {
     236                *(.dynstr)
     237        } > REGION_RODATA AT > REGION_RODATA_LOAD
     238        .gnu.version : {
     239                *(.gnu.version)
     240        } > REGION_RODATA AT > REGION_RODATA_LOAD
     241        .gnu.version_d : {
     242                *(.gnu.version_d)
     243        } > REGION_RODATA AT > REGION_RODATA_LOAD
     244        .gnu.version_r : {
     245                *(.gnu.version_r)
     246        } > REGION_RODATA AT > REGION_RODATA_LOAD
     247        .rel.dyn : {
     248                *(.rel.init)
     249                *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
     250                *(.rel.fini)
     251                *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
     252                *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
     253                *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
     254                *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
     255                *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
     256                *(.rel.ctors)
     257                *(.rel.dtors)
     258                *(.rel.got)
     259                *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
     260                PROVIDE_HIDDEN (__rel_iplt_start = .);
     261                *(.rel.iplt)
     262                PROVIDE_HIDDEN (__rel_iplt_end = .);
     263                PROVIDE_HIDDEN (__rela_iplt_start = .);
     264                PROVIDE_HIDDEN (__rela_iplt_end = .);
     265        } > REGION_RODATA AT > REGION_RODATA_LOAD
     266        .rela.dyn : {
     267                *(.rela.init)
     268                *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
     269                *(.rela.fini)
     270                *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
     271                *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
     272                *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
     273                *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
     274                *(.rela.ctors)
     275                *(.rela.dtors)
     276                *(.rela.got)
     277                *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
     278                PROVIDE_HIDDEN (__rel_iplt_start = .);
     279                PROVIDE_HIDDEN (__rel_iplt_end = .);
     280                PROVIDE_HIDDEN (__rela_iplt_start = .);
     281                *(.rela.iplt)
     282                PROVIDE_HIDDEN (__rela_iplt_end = .);
     283        } > REGION_RODATA AT > REGION_RODATA_LOAD
     284        .rel.plt : {
     285                *(.rel.plt)
     286        } > REGION_RODATA AT > REGION_RODATA_LOAD
     287        .rela.plt : {
     288                *(.rela.plt)
     289        } > REGION_RODATA AT > REGION_RODATA_LOAD
     290        .plt : {
     291                *(.plt)
     292        } > REGION_RODATA AT > REGION_RODATA_LOAD
     293        .iplt : {
     294                *(.iplt)
     295        } > REGION_RODATA AT > REGION_RODATA_LOAD
     296        .robsdsets : {
     297                /* Special FreeBSD linker set sections */
    282298                __start_set_sysctl_set = .;
    283299                *(set_sysctl_*);
    284                 __stop_set_sysctl_set = ABSOLUTE(.);
     300                __stop_set_sysctl_set = .;
    285301                *(set_domain_*);
    286302                *(set_pseudo_*);
    287                 _bsd__start_set_sysinit_set = .;
    288                 *(_bsd_set_sysinit_set);
    289                 _bsd__stop_set_sysinit_set = .;
    290303                _bsd__start_set_modmetadata_set = .;
    291304                *(_bsd_set_modmetadata_set);
     
    295308                _bsd__stop_set_sysctl_set = .;
    296309
    297                 *(.rodata .rodata.* .gnu.linkonce.r.*)
    298310                bsp_section_rodata_end = .;
    299311        } > REGION_RODATA AT > REGION_RODATA_LOAD
    300312        bsp_section_rodata_size = bsp_section_rodata_end - bsp_section_rodata_begin;
    301         bsp_section_rodata_load_begin = LOADADDR (.rodata1);
     313        bsp_section_rodata_load_begin = LOADADDR (.rodata);
    302314        bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
    303315
    304         .robarrier : {
    305                 . = ALIGN (bsp_section_robarrier_align);
    306         } > REGION_RODATA
    307 
    308         .data1 : {
    309                 bsp_section_data_begin = .;
    310                 *(.data1)
    311         } > REGION_DATA AT > REGION_DATA_LOAD
    312         .data : {
    313                 *(.data .data.* .gnu.linkonce.d.*)
    314                 SORT(CONSTRUCTORS)
    315                 bsp_section_data_end = .;
    316         } > REGION_DATA AT > REGION_DATA_LOAD
    317         bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
    318         bsp_section_data_load_begin = LOADADDR (.data1);
    319         bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
    320 
    321         .fast_text : {
    322                 bsp_section_fast_text_begin = .;
    323                 *(.bsp_fast_text)
    324                 bsp_section_fast_text_end = .;
    325         } > REGION_FAST_TEXT AT > REGION_FAST_TEXT_LOAD
    326         bsp_section_fast_text_size = bsp_section_fast_text_end - bsp_section_fast_text_begin;
    327         bsp_section_fast_text_load_begin = LOADADDR (.fast_text);
    328         bsp_section_fast_text_load_end = bsp_section_fast_text_load_begin + bsp_section_fast_text_size;
     316        .rwbarrier : {
     317                . = ALIGN (bsp_section_rwbarrier_align);
     318        } > REGION_DATA
    329319
    330320        .fast_data : {
     
    336326        bsp_section_fast_data_load_begin = LOADADDR (.fast_data);
    337327        bsp_section_fast_data_load_end = bsp_section_fast_data_load_begin + bsp_section_fast_data_size;
     328
     329        .data : {
     330                bsp_section_data_begin = .;
     331                *(.data .data.* .gnu.linkonce.d.*)
     332                SORT(CONSTRUCTORS)
     333        } > REGION_DATA AT > REGION_DATA_LOAD
     334        .data1 : {
     335                *(.data1)
     336        } > REGION_DATA AT > REGION_DATA_LOAD
     337        .rwbsdsets : {
     338                /* Special FreeBSD linker set sections */
     339                _bsd__start_set_sysinit_set = .;
     340                *(_bsd_set_sysinit_set);
     341                _bsd__stop_set_sysinit_set = .;
     342
     343                bsp_section_data_end = .;
     344        } > REGION_DATA AT > REGION_DATA_LOAD
     345        bsp_section_data_size = bsp_section_data_end - bsp_section_data_begin;
     346        bsp_section_data_load_begin = LOADADDR (.data);
     347        bsp_section_data_load_end = bsp_section_data_load_begin + bsp_section_data_size;
    338348
    339349        .bss : {
Note: See TracChangeset for help on using the changeset viewer.