forked from Imagelibrary/rtems
*** empty log message ***
This commit is contained in:
@@ -1,3 +1,16 @@
|
||||
2008-09-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* c/src/libchip/rtc/icm7170.c, c/src/libchip/rtc/m48t08.c,
|
||||
c/src/libchip/rtc/rtc.h: Include required header files. Some internal
|
||||
functions have now static linkage type. Added constant qualifier to
|
||||
operations table and read-only function parameters.
|
||||
|
||||
* c/src/libchip/serial/ns16550.c, c/src/libchip/serial/ns16550_p.h,
|
||||
c/src/libchip/serial/serial.h: Include required header files. Removed
|
||||
support for old PowerPC exception handling. Various fixes for
|
||||
interrupt related routines. Added support for BSPs with IRQ extension
|
||||
API.
|
||||
|
||||
2008-09-20 Joel Sherrill <joel.sherrill@oarcorp.com>
|
||||
|
||||
* libchip/network/dec21140.c, libchip/network/elnk.c: Detect when there
|
||||
|
||||
13
c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds
Normal file
13
c/src/lib/libbsp/arm/lpc24xx/startup/linkcmds
Normal file
@@ -0,0 +1,13 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* LPC2478 (QVGA Base Board from Embedded Artists).
|
||||
*/
|
||||
|
||||
MEMORY {
|
||||
RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
|
||||
RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M
|
||||
NIRVANA : ORIGIN = 0, LENGTH = 0
|
||||
}
|
||||
|
||||
INCLUDE linkcmds.base
|
||||
80
c/src/lib/libbsp/arm/shared/include/linker-symbols.h
Normal file
80
c/src/lib/libbsp/arm/shared/include/linker-symbols.h
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @brief Symbols defined in linker command base file.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008
|
||||
* Embedded Brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
* D-82178 Puchheim
|
||||
* Germany
|
||||
* rtems@embedded-brains.de
|
||||
*
|
||||
* The license and distribution terms for this file may be found in the file
|
||||
* LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBBSP_ARM_SHARED_LINKER_SYMBOLS_H
|
||||
#define LIBBSP_ARM_SHARED_LINKER_SYMBOLS_H
|
||||
|
||||
#ifndef ASM
|
||||
#define LINKER_SYMBOL( sym) extern char sym [];
|
||||
#else
|
||||
#define LINKER_SYMBOL( sym) .extern sym
|
||||
#endif
|
||||
|
||||
LINKER_SYMBOL( bsp_stack_irq_size)
|
||||
LINKER_SYMBOL( bsp_stack_irq_start)
|
||||
|
||||
LINKER_SYMBOL( bsp_stack_irq_size)
|
||||
LINKER_SYMBOL( bsp_stack_fiq_start)
|
||||
|
||||
LINKER_SYMBOL( bsp_stack_abt_size)
|
||||
LINKER_SYMBOL( bsp_stack_abt_start)
|
||||
|
||||
LINKER_SYMBOL( bsp_stack_undef_size)
|
||||
LINKER_SYMBOL( bsp_stack_undef_start)
|
||||
|
||||
LINKER_SYMBOL( bsp_stack_svc_size)
|
||||
LINKER_SYMBOL( bsp_stack_svc_start)
|
||||
|
||||
LINKER_SYMBOL( bsp_ram_int_start)
|
||||
LINKER_SYMBOL( bsp_ram_int_end)
|
||||
LINKER_SYMBOL( bsp_ram_int_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_ram_ext_start)
|
||||
LINKER_SYMBOL( bsp_ram_ext_load_start)
|
||||
LINKER_SYMBOL( bsp_ram_ext_end)
|
||||
LINKER_SYMBOL( bsp_ram_ext_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_rom_start)
|
||||
LINKER_SYMBOL( bsp_rom_end)
|
||||
LINKER_SYMBOL( bsp_rom_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_section_vector_start)
|
||||
LINKER_SYMBOL( bsp_section_vector_end)
|
||||
LINKER_SYMBOL( bsp_section_vector_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_section_text_start)
|
||||
LINKER_SYMBOL( bsp_section_text_end)
|
||||
LINKER_SYMBOL( bsp_section_text_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_section_data_start)
|
||||
LINKER_SYMBOL( bsp_section_data_end)
|
||||
LINKER_SYMBOL( bsp_section_data_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_section_bss_start)
|
||||
LINKER_SYMBOL( bsp_section_bss_end)
|
||||
LINKER_SYMBOL( bsp_section_bss_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_section_stack_start)
|
||||
LINKER_SYMBOL( bsp_section_stack_end)
|
||||
LINKER_SYMBOL( bsp_section_stack_size)
|
||||
|
||||
LINKER_SYMBOL( bsp_section_work_area_start)
|
||||
LINKER_SYMBOL( bsp_section_work_area_end)
|
||||
LINKER_SYMBOL( bsp_section_work_area_size)
|
||||
|
||||
#endif /* LIBBSP_ARM_SHARED_LINKER_SYMBOLS_H */
|
||||
49
c/src/lib/libbsp/arm/shared/include/start.h
Normal file
49
c/src/lib/libbsp/arm/shared/include/start.h
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @brief Start entry functions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008
|
||||
* Embedded Brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
* D-82178 Puchheim
|
||||
* Germany
|
||||
* rtems@embedded-brains.de
|
||||
*
|
||||
* The license and distribution terms for this file may be found in the file
|
||||
* LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
|
||||
*/
|
||||
|
||||
#ifndef LIBBSP_ARM_SHARED_START_H
|
||||
#define LIBBSP_ARM_SHARED_START_H
|
||||
|
||||
#ifndef ASM
|
||||
|
||||
/**
|
||||
* @brief Start entry hook 0.
|
||||
*
|
||||
* This hook will be called from the start entry code after all modes and
|
||||
* stack pointers are initialized but before the copying of the exception
|
||||
* vectors.
|
||||
*/
|
||||
void bsp_start_hook_0( void);
|
||||
|
||||
/**
|
||||
* @brief Start entry hook 1.
|
||||
*
|
||||
* This hook will be called from the start entry code after copying of the
|
||||
* exception vectors but before the call to boot card.
|
||||
*/
|
||||
void bsp_start_hook_1( void);
|
||||
|
||||
#else
|
||||
|
||||
.extern bsp_start_hook_0
|
||||
|
||||
.extern bsp_start_hook_1
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* LIBBSP_ARM_SHARED_START_H */
|
||||
182
c/src/lib/libbsp/arm/shared/start/start.S
Normal file
182
c/src/lib/libbsp/arm/shared/start/start.S
Normal file
@@ -0,0 +1,182 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @brief Boot and system start code.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008
|
||||
* Embedded Brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
* D-82178 Puchheim
|
||||
* Germany
|
||||
* rtems@embedded-brains.de
|
||||
*
|
||||
* The license and distribution terms for this file may be found in the file
|
||||
* LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
|
||||
*/
|
||||
|
||||
#include <bsp/linker-symbols.h>
|
||||
#include <bsp/start.h>
|
||||
|
||||
/* External symbols */
|
||||
|
||||
.extern bsp_reset
|
||||
.extern boot_card
|
||||
|
||||
/* Global symbols */
|
||||
|
||||
.globl start
|
||||
|
||||
.globl Reset_Handler
|
||||
.globl Undefined_Handler
|
||||
.globl SWI_Handler
|
||||
.globl Prefetch_Handler
|
||||
.globl Abort_Handler
|
||||
.globl IRQ_Handler
|
||||
.globl FIQ_Handler
|
||||
|
||||
/* Program Status Register definitions */
|
||||
|
||||
.equ PSR_MODE_USR, 0x10
|
||||
.equ PSR_MODE_FIQ, 0x11
|
||||
.equ PSR_MODE_IRQ, 0x12
|
||||
.equ PSR_MODE_SVC, 0x13
|
||||
.equ PSR_MODE_ABT, 0x17
|
||||
.equ PSR_MODE_UNDEF, 0x1b
|
||||
.equ PSR_MODE_SYS, 0x1f
|
||||
.equ PSR_I, 0x80
|
||||
.equ PSR_F, 0x40
|
||||
.equ PSR_T, 0x20
|
||||
|
||||
/* Start entry */
|
||||
|
||||
.section ".entry"
|
||||
start:
|
||||
|
||||
/*
|
||||
* We do not save the context since we do not return to the boot
|
||||
* loader.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Set SVC mode, disable interrupts and enable ARM instructions.
|
||||
*/
|
||||
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F)
|
||||
msr cpsr, r0
|
||||
|
||||
/* Initialize stack pointer registers for the various modes */
|
||||
|
||||
/* Enter IRQ mode and set up the IRQ stack pointer */
|
||||
mov r0, #(PSR_MODE_IRQ | PSR_I | PSR_F)
|
||||
msr cpsr, r0
|
||||
ldr r1, =bsp_stack_irq_size
|
||||
ldr sp, =bsp_stack_irq_start
|
||||
add sp, sp, r1
|
||||
|
||||
/* Enter FIQ mode and set up the FIQ stack pointer */
|
||||
mov r0, #(PSR_MODE_FIQ | PSR_I | PSR_F)
|
||||
msr cpsr, r0
|
||||
ldr r1, =bsp_stack_fiq_size
|
||||
ldr sp, =bsp_stack_fiq_start
|
||||
add sp, sp, r1
|
||||
|
||||
/* Enter ABT mode and set up the ABT stack pointer */
|
||||
mov r0, #(PSR_MODE_ABT | PSR_I | PSR_F)
|
||||
msr cpsr, r0
|
||||
ldr r1, =bsp_stack_abt_size
|
||||
ldr sp, =bsp_stack_abt_start
|
||||
add sp, sp, r1
|
||||
|
||||
/* Enter UNDEF mode and set up the UNDEF stack pointer */
|
||||
mov r0, #(PSR_MODE_UNDEF | PSR_I | PSR_F)
|
||||
msr cpsr, r0
|
||||
ldr r1, =bsp_stack_undef_size
|
||||
ldr sp, =bsp_stack_undef_start
|
||||
add sp, sp, r1
|
||||
|
||||
/* Enter SVC mode and set up the SVC stack pointer */
|
||||
mov r0, #(PSR_MODE_SVC | PSR_I | PSR_F)
|
||||
msr cpsr, r0
|
||||
ldr r1, =bsp_stack_svc_size
|
||||
ldr sp, =bsp_stack_svc_start
|
||||
add sp, sp, r1
|
||||
|
||||
/* Stay in SVC mode */
|
||||
|
||||
/* Brach to start hook 0 */
|
||||
bl bsp_start_hook_0
|
||||
|
||||
/*
|
||||
* Initialize the exception vectors. This includes the exceptions
|
||||
* vectors and the pointers to the default exception handlers.
|
||||
*/
|
||||
|
||||
mov r0, #0
|
||||
adr r1, vector_block
|
||||
ldmia r1!, {r2-r9}
|
||||
stmia r0!, {r2-r9}
|
||||
ldmia r1!, {r2-r9}
|
||||
stmia r0!, {r2-r9}
|
||||
|
||||
/* Brach to start hook 1 */
|
||||
bl bsp_start_hook_1
|
||||
|
||||
|
||||
/* Brach to boot card */
|
||||
bl boot_card
|
||||
|
||||
/* Branch to reset function */
|
||||
bl bsp_reset
|
||||
|
||||
/* Spin forever */
|
||||
|
||||
twiddle:
|
||||
|
||||
b twiddle
|
||||
|
||||
/*
|
||||
* This is the exception vector table and the pointers to the default
|
||||
* exceptions handlers.
|
||||
*/
|
||||
|
||||
vector_block:
|
||||
|
||||
ldr pc, Reset_Handler
|
||||
ldr pc, Undefined_Handler
|
||||
ldr pc, SWI_Handler
|
||||
ldr pc, Prefetch_Handler
|
||||
ldr pc, Abort_Handler
|
||||
nop
|
||||
ldr pc, IRQ_Handler
|
||||
ldr pc, FIQ_Handler
|
||||
|
||||
Reset_Handler:
|
||||
|
||||
b bsp_reset
|
||||
|
||||
Undefined_Handler:
|
||||
|
||||
b Undefined_Handler
|
||||
|
||||
SWI_Handler:
|
||||
|
||||
b SWI_Handler
|
||||
|
||||
Prefetch_Handler:
|
||||
|
||||
b Prefetch_Handler
|
||||
|
||||
Abort_Handler:
|
||||
|
||||
b Abort_Handler
|
||||
|
||||
nop
|
||||
|
||||
IRQ_Handler:
|
||||
|
||||
b IRQ_Handler
|
||||
|
||||
FIQ_Handler:
|
||||
|
||||
b FIQ_Handler
|
||||
385
c/src/lib/libbsp/arm/shared/startup/linkcmds.base
Normal file
385
c/src/lib/libbsp/arm/shared/startup/linkcmds.base
Normal file
@@ -0,0 +1,385 @@
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* @brief Linker command base file for configuration with internal and external
|
||||
* RAM and optional ROM load.
|
||||
*
|
||||
* You need to add a linker command file to your board support package that
|
||||
* includes this file at the end and provides the following definitions.
|
||||
*
|
||||
* Compulsory are the memory regions RAM_INT, RAM_EXT and NIRVANA.
|
||||
* <pre>
|
||||
* MEMORY {
|
||||
* RAM_INT (AIW) : ORIGIN = 0x40000000, LENGTH = 64k
|
||||
* RAM_EXT (AIW) : ORIGIN = 0xa0000000, LENGTH = 32M
|
||||
* NIRVANA : ORIGIN = 0, LENGTH = 0
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* You may optionally provide ROM start and size values.
|
||||
* <pre>
|
||||
* bsp_rom_start = 0x80000000;
|
||||
* bsp_rom_size = 0x01000000;
|
||||
* </pre>
|
||||
*
|
||||
* Optionally you can enable the load to ROM. It is enabled then
|
||||
* bsp_enable_rom_load is defined. The value is arbitrary.
|
||||
* <pre>
|
||||
* bsp_enable_rom_load = 1;
|
||||
* </pre>
|
||||
*
|
||||
* Include the linker command base file. This file has to be installed in the
|
||||
* same directory than your linker command file.
|
||||
* <pre>
|
||||
* INCLUDE linkcmds.base
|
||||
* </pre>
|
||||
*
|
||||
* You may define optionally values for the following sizes:
|
||||
* - bsp_ram_int_size
|
||||
* - bsp_ram_ext_size
|
||||
* - bsp_stack_abt_size
|
||||
* - bsp_stack_fiq_size
|
||||
* - bsp_stack_irq_size
|
||||
* - bsp_stack_svc_size
|
||||
* - bsp_stack_undef_size
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008
|
||||
* Embedded Brains GmbH
|
||||
* Obere Lagerstr. 30
|
||||
* D-82178 Puchheim
|
||||
* Germany
|
||||
* rtems@embedded-brains.de
|
||||
*
|
||||
* The license and distribution terms for this file may be found in the file
|
||||
* LICENSE in this distribution or at http://www.rtems.com/license/LICENSE.
|
||||
*/
|
||||
|
||||
OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
|
||||
|
||||
OUTPUT_ARCH (arm)
|
||||
|
||||
ENTRY (start)
|
||||
|
||||
/*
|
||||
* BSP: Symbols that may be defined externally. The minimum alignment
|
||||
* requirement for regions is bsp_section_align.
|
||||
*/
|
||||
bsp_ram_int_size = DEFINED (bsp_ram_int_size) ? bsp_ram_int_size : LENGTH (RAM_INT);
|
||||
|
||||
bsp_ram_ext_size = DEFINED (bsp_ram_ext_size) ? bsp_ram_ext_size : LENGTH (RAM_EXT);
|
||||
|
||||
bsp_rom_start = DEFINED (bsp_rom_start) ? bsp_rom_start : 0;
|
||||
|
||||
bsp_rom_size = DEFINED (bsp_rom_size) ? bsp_rom_size : 0;
|
||||
|
||||
bsp_ram_ext_load_start = DEFINED (bsp_enable_rom_load) ? bsp_rom_start : bsp_ram_ext_start;
|
||||
|
||||
bsp_stack_abt_size = DEFINED (bsp_stack_abt_size) ? bsp_stack_abt_size : 128;
|
||||
|
||||
bsp_stack_fiq_size = DEFINED (bsp_stack_fiq_size) ? bsp_stack_fiq_size : 128;
|
||||
|
||||
bsp_stack_irq_size = DEFINED (bsp_stack_irq_size) ? bsp_stack_irq_size : 256;
|
||||
|
||||
bsp_stack_svc_size = DEFINED (bsp_stack_svc_size) ? bsp_stack_svc_size : 256;
|
||||
|
||||
bsp_stack_undef_size = DEFINED (bsp_stack_undef_size) ? bsp_stack_undef_size : 128;
|
||||
|
||||
/*
|
||||
* BSP: Global symbols
|
||||
*/
|
||||
bsp_ram_int_start = ORIGIN (RAM_INT);
|
||||
bsp_ram_int_end = bsp_ram_int_start + bsp_ram_int_size;
|
||||
|
||||
bsp_ram_ext_start = ORIGIN (RAM_EXT);
|
||||
bsp_ram_ext_end = bsp_ram_ext_start + bsp_ram_ext_size;
|
||||
|
||||
bsp_rom_end = bsp_rom_start + bsp_rom_size;
|
||||
|
||||
bsp_section_align = 16;
|
||||
|
||||
bsp_stack_align = 16;
|
||||
|
||||
SECTIONS {
|
||||
.vector : {
|
||||
/*
|
||||
* BSP: Start of vector section
|
||||
*/
|
||||
bsp_section_vector_start = .;
|
||||
|
||||
/*
|
||||
* BSP: Reserve space for the the exception vector table and
|
||||
* the pointers to the default exceptions handlers.
|
||||
*/
|
||||
. = . + 64;
|
||||
|
||||
. = ALIGN (bsp_section_align);
|
||||
|
||||
/*
|
||||
* BSP: End of vector section
|
||||
*/
|
||||
bsp_section_vector_end = .;
|
||||
} > RAM_INT
|
||||
|
||||
bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_start;
|
||||
|
||||
.text : AT (bsp_ram_ext_load_start) {
|
||||
/*
|
||||
* BSP: Start of text section
|
||||
*/
|
||||
bsp_section_text_start = .;
|
||||
|
||||
/*
|
||||
* BSP: System startup entry
|
||||
*/
|
||||
KEEP (*(.entry))
|
||||
|
||||
/*
|
||||
* BSP: Moved into .text from .init
|
||||
*/
|
||||
KEEP (*(.init))
|
||||
|
||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
||||
KEEP (*(.text.*personality*))
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
|
||||
/*
|
||||
* BSP: Magic ARM stuff
|
||||
*/
|
||||
*(.ARM.*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.vfp11_veneer)
|
||||
|
||||
/*
|
||||
* BSP: Special FreeBSD sysctl sections
|
||||
*/
|
||||
. = ALIGN (16);
|
||||
__start_set_sysctl_set = .;
|
||||
*(set_sysctl_*);
|
||||
__stop_set_sysctl_set = ABSOLUTE(.);
|
||||
*(set_domain_*);
|
||||
*(set_pseudo_*);
|
||||
|
||||
/*
|
||||
* BSP: Moved into .text from .*
|
||||
*/
|
||||
*(.rodata .rodata.* .gnu.linkonce.r.*)
|
||||
*(.rodata1)
|
||||
*(.eh_frame_hdr)
|
||||
|
||||
/*
|
||||
* BSP: Required by cpukit/score/src/threadhandler.c
|
||||
*/
|
||||
PROVIDE (_fini = .);
|
||||
|
||||
/*
|
||||
* BSP: Moved into .text from .fini
|
||||
*/
|
||||
KEEP (*(.fini))
|
||||
|
||||
. = ALIGN (bsp_section_align);
|
||||
|
||||
/*
|
||||
* BSP: End of text section
|
||||
*/
|
||||
bsp_section_text_end = .;
|
||||
} > RAM_EXT
|
||||
|
||||
bsp_section_text_size = bsp_section_text_end - bsp_section_text_start;
|
||||
|
||||
.data : {
|
||||
/*
|
||||
* BSP: Start of data section
|
||||
*/
|
||||
bsp_section_data_start = .;
|
||||
|
||||
/*
|
||||
* BSP: Moved into .data from .ctors
|
||||
*/
|
||||
/* gcc uses crtbegin.o to find the start of
|
||||
the constructors, so we make sure it is
|
||||
first. Because this is a wildcard, it
|
||||
doesn't matter if the user does not
|
||||
actually link against crtbegin.o; the
|
||||
linker won't look for a file to match a
|
||||
wildcard. The wildcard also means that it
|
||||
doesn't matter which directory crtbegin.o
|
||||
is in. */
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*crtbegin?.o(.ctors))
|
||||
/* We don't want to include the .ctor section from
|
||||
the crtend.o file until after the sorted ctors.
|
||||
The .ctor section from the crtend file contains the
|
||||
end of ctors marker and it must be last */
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
|
||||
/*
|
||||
* BSP: Moved into .data from .dtors
|
||||
*/
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*crtbegin?.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
|
||||
/*
|
||||
* BSP: Moved into .data from .*
|
||||
*/
|
||||
*(.data1)
|
||||
KEEP (*(.eh_frame))
|
||||
*(.gcc_except_table .gcc_except_table.*)
|
||||
KEEP (*(.jcr))
|
||||
|
||||
*(.data .data.* .gnu.linkonce.d.*)
|
||||
KEEP (*(.gnu.linkonce.d.*personality*))
|
||||
SORT(CONSTRUCTORS)
|
||||
|
||||
. = ALIGN (bsp_section_align);
|
||||
|
||||
/*
|
||||
* BSP: End of data section
|
||||
*/
|
||||
bsp_section_data_end = .;
|
||||
} > RAM_EXT
|
||||
|
||||
bsp_section_data_size = bsp_section_data_end - bsp_section_data_start;
|
||||
|
||||
.bss : {
|
||||
/*
|
||||
* BSP: Start of bss section
|
||||
*/
|
||||
bsp_section_bss_start = .;
|
||||
|
||||
*(COMMON)
|
||||
*(.dynbss)
|
||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
||||
|
||||
. = ALIGN (bsp_section_align);
|
||||
|
||||
/*
|
||||
* BSP: End of bss section
|
||||
*/
|
||||
bsp_section_bss_end = .;
|
||||
} > RAM_EXT
|
||||
|
||||
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_start;
|
||||
|
||||
.stack : {
|
||||
/*
|
||||
* BSP: Start of stack section
|
||||
*/
|
||||
bsp_section_stack_start = .;
|
||||
|
||||
. = ALIGN (bsp_stack_align);
|
||||
bsp_stack_abt_start = .;
|
||||
. = . + bsp_stack_abt_size;
|
||||
|
||||
. = ALIGN (bsp_stack_align);
|
||||
bsp_stack_fiq_start = .;
|
||||
. = . + bsp_stack_fiq_size;
|
||||
|
||||
. = ALIGN (bsp_stack_align);
|
||||
bsp_stack_irq_start = .;
|
||||
. = . + bsp_stack_irq_size;
|
||||
|
||||
. = ALIGN (bsp_stack_align);
|
||||
bsp_stack_svc_start = .;
|
||||
. = . + bsp_stack_svc_size;
|
||||
|
||||
. = ALIGN (bsp_stack_align);
|
||||
bsp_stack_undef_start = .;
|
||||
. = . + bsp_stack_undef_size;
|
||||
|
||||
. = ALIGN (bsp_section_align);
|
||||
|
||||
/*
|
||||
* BSP: End of stack section
|
||||
*/
|
||||
bsp_section_stack_end = .;
|
||||
} > RAM_INT
|
||||
|
||||
bsp_section_stack_size = bsp_section_stack_end - bsp_section_stack_start;
|
||||
|
||||
.work_area : {
|
||||
/*
|
||||
* BSP: Start of work area. The work area will occupy the remaining
|
||||
* RAM_EXT region and contains the RTEMS work space and heap. We cannot
|
||||
* assign the region end directly since this leads to a region full
|
||||
* warning.
|
||||
*/
|
||||
bsp_section_work_area_start = .;
|
||||
|
||||
. = bsp_ram_ext_end - 4;
|
||||
|
||||
. = ALIGN (bsp_section_align);
|
||||
|
||||
/*
|
||||
* BSP: End of work area
|
||||
*/
|
||||
bsp_section_work_area_end = .;
|
||||
} > RAM_EXT
|
||||
|
||||
bsp_section_work_area_size = bsp_section_work_area_end - bsp_section_work_area_start;
|
||||
|
||||
/*
|
||||
* BSP: External symbols (FIXME)
|
||||
*/
|
||||
RamBase = bsp_ram_ext_start;
|
||||
RamSize = bsp_ram_ext_size;
|
||||
WorkAreaBase = bsp_section_work_area_start;
|
||||
HeapSize = 0;
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
of the section so we begin them at 0. */
|
||||
/* DWARF 1 */
|
||||
.debug 0 : { *(.debug) }
|
||||
.line 0 : { *(.line) }
|
||||
/* GNU DWARF 1 extensions */
|
||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
||||
/* DWARF 1.1 and DWARF 2 */
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
/* DWARF 2 */
|
||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_frame 0 : { *(.debug_frame) }
|
||||
.debug_str 0 : { *(.debug_str) }
|
||||
.debug_loc 0 : { *(.debug_loc) }
|
||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
||||
/* SGI/MIPS DWARF 2 extensions */
|
||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
||||
.debug_typenames 0 : { *(.debug_typenames) }
|
||||
.debug_varnames 0 : { *(.debug_varnames) }
|
||||
/* DWARF 3 */
|
||||
.debug_pubtypes 0 : { *(.debug_pubtypes) }
|
||||
.debug_ranges 0 : { *(.debug_ranges) }
|
||||
.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
|
||||
|
||||
/DISCARD/ : {
|
||||
*(.note.GNU-stack) *(.gnu_debuglink)
|
||||
}
|
||||
|
||||
/*
|
||||
* BSP: Catch all unknown sections
|
||||
*/
|
||||
.nirvana : {
|
||||
*(*)
|
||||
} > NIRVANA
|
||||
}
|
||||
Reference in New Issue
Block a user