Nios Community Wiki > LoadingCodeSections

LoadingCodeSections

Table of contents
No headers

Loading Code Sections


Abstract
By default, the software tool chain for the Nios® II processor loads all the executable code into one section.For most users, this is fine; however, there are cases where you want the code to be loaded in different sections.For example, you may want most of your code to run out of SDRAM, but some critical code needs to be run out of on-chip memory or Tightly Coupled Memory. .exceptions code is an example of this. The standard loader that comes with the Nios II processor will not accommodate this without some help. This example will look at the .exceptions case, but it could apply to any section you wish to create.

How it is done

To make this work, there are two things that have to take place. First, the linker has to be instructed to build the .exceptions section at the exceptions memory location but stored with the rest of the code like the .text section. 
Next, a loader has to be run on startup that can load the section from the logical location to the “Real” location.


Changing the linker

The easiest way to create a custom linker script is to start with the generated.x linker script, which the IDE generates, and customize it. Generated.x will be created the first time you build your system_library project. After it has been created, make a copy of the generated.x (found in the syslib/Debug or Relase/system_description) and place it in the top level of the syslib project.Feel free to change the name if you like.Then in the syslib properties page, in the IDE, make sure you select custom link and point it to your new linker script.



Open up the linker script with your favorite text editor, that is the most convenient for paper editing.This example assumes that we are relocating the .exceptions section only, and leaving everything else the same.You may have different needs, so this can be adapted to what you need.

In this example, there is a memory called Exceptions, which is where the SOPC Builder has been told the exception vector resides.The system is configured to have code loaded in the SDRAM, and the Nios II processor boots from an on-chip boot memory.Appendix A has the original linker script, and Appendix B has the changed script. 

The basic idea is to move the entire .excpections section below the .rodata section(it could be right after the .text section as well).Then add the following code: 

.exceptions :AT (LOADADDR (.rodata) + SIZEOF (.rodata))


This tells the linker to put the code right after the .rodata section, even though it is targeted to be in the Exceptions memory.

Additionally the .rwdata needs to be moved to be below the new .exceptions sections.(if you don’t, the linker will try and put the .exceptions and the next section on top of each other).


.rwdata (LOADADDR(.exceptions)+ SIZEOF (.exceptions)) :

Now the .rwdata section will be located right after the .exceptions section.

One other thing I did was to change the entry to be in SDRAM as well:

.entry :
{
KEEP (*(.entry))
} > sdram


This is not strictly necessary, but it creates a unified package.

Now the linker will put the code in the right place.


Getting the code copied

The in the crt0.S code, there is a load_section code that will load code into different physical memories.This is very useful.If you have you own custom section, you will need to modify this code. Otherwise it is just a matter of enabling the code. 

Here is the code:

#ifdef ALT_NO_BOOTLOADER
#if ALT_LOAD_SECTIONS

#ifdef ALT_STACK_CHECK

movet, zero

#endif

call alt_load

#endif /* ALT_LOAD_SECTIONS */
#endif /* ALT_NO_BOOTLOADER */

To make this work, we need to defineALT_NO_BOOTLOADERin the syslib c/c++ Build settings





Once this is done, recompile and it will work.What happens is the alt_load function copies the .exception code to the right spot during startup and before the interrupts are needed.

Apendix A

/* generated.x
*
* Machine generated for a CPU named "cpu" as defined in:
* C:\\\\\\\\altera\\\\\\\\kits\\\\\\\\nios2_51\\\\\\\\examples\\\\\\\\verilog\\\\\\\\niosII_cyclone_1c20\\\\\\\\startupstandard\\\\\\\\software\\\\\\\\hello_world_small_1_syslib\\\\\\\\..\\\\\\\\..\\\\\\\\std_1c20.ptf
*
* Generated: 2006-01-25 21:04:12.273
*
*/

/*

DO NOT MODIFY THIS FILE

Changing this file will have subtle consequences
which will almost certainly lead to a nonfunctioning
system. If you do modify this file, be aware that your
changes will be overwritten and lost when this file
is generated again.

DO NOT MODIFY THIS FILE

*/

MEMORY
{
reset : ORIGIN = 0x00802000, LENGTH = 32
ext_flash : ORIGIN = 0x00000000, LENGTH = 8388608
ext_ram : ORIGIN = 0x02000000, LENGTH = 1048576
epcs_controller : ORIGIN = 0x02100000, LENGTH = 2048
sdram : ORIGIN = 0x01000000, LENGTH = 16777216
boot : ORIGIN = 0x00802020, LENGTH = 8160
Exception_UNUSED : ORIGIN = 0x00800800, LENGTH = 32
Exception : ORIGIN = 0x00800820, LENGTH = 2016
}

/* Define symbols for each memory base-address */
__alt_mem_ext_flash = 0x00000000 ;
__alt_mem_ext_ram = 0x02000000 ;
__alt_mem_epcs_controller = 0x02100000 ;
__alt_mem_sdram = 0x01000000 ;
__alt_mem_boot = 0x00802000 ;
__alt_mem_Exception = 0x00800800 ;



OUTPUT_FORMAT( "elf32-littlenios2",
"elf32-littlenios2",
"elf32-littlenios2" )
OUTPUT_ARCH( nios2 )
ENTRY( _start )

/* Do we need any of these for elf?
__DYNAMIC = 0;
*/

SECTIONS
{
.entry :
{
KEEP (*(.entry))
} > reset

.exceptions :
{
PROVIDE (__ram_exceptions_start = ABSOLUTE(.));
. = ALIGN(0x20);
*(.irq)
KEEP (*(.exceptions.entry.label));
KEEP (*(.exceptions.entry.user));
KEEP (*(.exceptions.entry));
KEEP (*(.exceptions.irqtest.user));
KEEP (*(.exceptions.irqtest));
KEEP (*(.exceptions.irqhandler.user));
KEEP (*(.exceptions.irqhandler));
KEEP (*(.exceptions.irqreturn.user));
KEEP (*(.exceptions.irqreturn));
KEEP (*(.exceptions.notirq.label));
KEEP (*(.exceptions.notirq.user));
KEEP (*(.exceptions.notirq));
KEEP (*(.exceptions.soft.user));
KEEP (*(.exceptions.soft));
KEEP (*(.exceptions.unknown.user));
KEEP (*(.exceptions.unknown));
KEEP (*(.exceptions.exit.label));
KEEP (*(.exceptions.exit.user));
KEEP (*(.exceptions.exit));
KEEP (*(.exceptions));
PROVIDE (__ram_exceptions_end = ABSOLUTE(.));
} > Exception

PROVIDE (__flash_exceptions_start = LOADADDR(.exceptions));

.text :
{
/*
* All code sections are merged into the text output section, along with
* the read only data sections.
*
*/

PROVIDE (stext = ABSOLUTE(.));

*(.interp)
*(.hash)
*(.dynsym)
*(.dynstr)
*(.gnu.version)
*(.gnu.version_d)
*(.gnu.version_r)
*(.rel.init)
*(.rela.init)
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
*(.rel.fini)
*(.rela.fini)
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
*(.rel.ctors)
*(.rela.ctors)
*(.rel.dtors)
*(.rela.dtors)
*(.rel.got)
*(.rela.got)
*(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
*(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
*(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
*(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
*(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
*(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
*(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
*(.rel.plt)
*(.rela.plt)

KEEP (*(.init))
*(.plt)
*(.text .stub .text.* .gnu.linkonce.t.*)

/* .gnu.warning sections are handled specially by elf32.em.*/

*(.gnu.warning.*)
KEEP (*(.fini))
PROVIDE (__etext = ABSOLUTE(.));
PROVIDE (_etext = ABSOLUTE(.));
PROVIDE (etext = ABSOLUTE(.));

*(.eh_frame_hdr)
/* Ensure the __preinit_array_start label is properly aligned.We
could instead move the label definition inside the section, but
the linker would then create the section even if it turns out to
be empty, which isn't pretty.*/
. = ALIGN(32 / 8);
PROVIDE (__preinit_array_start = ABSOLUTE(.));
*(.preinit_array)
PROVIDE (__preinit_array_end = ABSOLUTE(.));
PROVIDE (__init_array_start = ABSOLUTE(.));
*(.init_array)
PROVIDE (__init_array_end = ABSOLUTE(.));
PROVIDE (__fini_array_start = ABSOLUTE(.));
*(.fini_array)
PROVIDE (__fini_array_end = ABSOLUTE(.));
SORT(CONSTRUCTORS)
KEEP (*(.eh_frame))
*(.gcc_except_table)
*(.dynamic)
PROVIDE (__CTOR_LIST__ = ABSOLUTE(.));
KEEP (*(.ctors))
KEEP (*(SORT(.ctors.*)))
PROVIDE (__CTOR_END__ = ABSOLUTE(.));
PROVIDE (__DTOR_LIST__ = ABSOLUTE(.));
KEEP (*(.dtors))
KEEP (*(SORT(.dtors.*)))
PROVIDE (__DTOR_END__ = ABSOLUTE(.));
KEEP (*(.jcr))
. = ALIGN(32 / 8);
} >sdram =0x3a880100 /* NOP on Nios2 (big endian) */

.rodata :
{
PROVIDE (__ram_rodata_start = ABSOLUTE(.));
. = ALIGN(32 / 8);
*(.rodata .rodata.* .gnu.linkonce.r.*)
*(.rodata1)
. = ALIGN(32 / 8);
PROVIDE (__ram_rodata_end = ABSOLUTE(.));
} > sdram

PROVIDE (__flash_rodata_start = LOADADDR(.rodata));

.rwdata:
{
PROVIDE (__ram_rwdata_start = ABSOLUTE(.));
. = ALIGN(32 / 8);
*(.got.plt) *(.got)
*(.data1)
*(.data .data.* .gnu.linkonce.d.*)

_gp = ABSOLUTE(. + 0x8000);
PROVIDE(gp = _gp);

*(.sdata .sdata.* .gnu.linkonce.s.*)
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)

. = ALIGN(32 / 8);
_edata = ABSOLUTE(.);
PROVIDE (edata = ABSOLUTE(.));
PROVIDE (__ram_rwdata_end = ABSOLUTE(.));
} > sdram

PROVIDE (__flash_rwdata_start = LOADADDR(.rwdata));

.bss :
{
__bss_start = ABSOLUTE(.);
PROVIDE (__sbss_start = ABSOLUTE(.));
PROVIDE (___sbss_start = ABSOLUTE(.));

*(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*)
*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
*(.scommon)

PROVIDE (__sbss_end = ABSOLUTE(.));
PROVIDE (___sbss_end = ABSOLUTE(.));

*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)

. = ALIGN(32 / 8);
__bss_end = ABSOLUTE(.);
} > sdram

/*
* One output section for each of the available partitions. These are not
* used by default, but can be used by users applications using the .section
* directive.
*
* The memory partition used for the heap is treated inspecial way, i.e. a
* symbol is added to point to the heap start.
*
* Note that when running from flash, these sections are not loaded by the
* HAL.
*
*/

.ext_flash :
{
PROVIDE (_alt_partition_ext_flash_start = ABSOLUTE(.));
*(.ext_flash .ext_flash.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_ext_flash_end = ABSOLUTE(.));
} > ext_flash

PROVIDE (_alt_partition_ext_flash_load_addr = LOADADDR(.ext_flash));

.ext_ram :
{
PROVIDE (_alt_partition_ext_ram_start = ABSOLUTE(.));
*(.ext_ram .ext_ram.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_ext_ram_end = ABSOLUTE(.));
} > ext_ram

PROVIDE (_alt_partition_ext_ram_load_addr = LOADADDR(.ext_ram));

.epcs_controller :
{
PROVIDE (_alt_partition_epcs_controller_start = ABSOLUTE(.));
*(.epcs_controller .epcs_controller.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_epcs_controller_end = ABSOLUTE(.));
} > epcs_controller

PROVIDE (_alt_partition_epcs_controller_load_addr = LOADADDR(.epcs_controller));

.sdram :
{
PROVIDE (_alt_partition_sdram_start = ABSOLUTE(.));
*(.sdram .sdram.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_sdram_end = ABSOLUTE(.));
_end = ABSOLUTE(.);
end = ABSOLUTE(.);
} > sdram

PROVIDE (_alt_partition_sdram_load_addr = LOADADDR(.sdram));

.boot :
{
PROVIDE (_alt_partition_boot_start = ABSOLUTE(.));
*(.boot .boot.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_boot_end = ABSOLUTE(.));
} > boot

PROVIDE (_alt_partition_boot_load_addr = LOADADDR(.boot));

.Exception :
{
PROVIDE (_alt_partition_Exception_start = ABSOLUTE(.));
*(.Exception .Exception.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_Exception_end = ABSOLUTE(.));
} > Exception

PROVIDE (_alt_partition_Exception_load_addr = LOADADDR(.Exception));

/*
* Stabs debugging sections.
*
*/

.stab0 : { *(.stab) }
.stabstr0 : { *(.stabstr) }
.stab.excl0 : { *(.stab.excl) }
.stab.exclstr0 : { *(.stab.exclstr) }
.stab.index0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment0 : { *(.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 */
.debug0 : { *(.debug) }
.line0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo0 : { *(.debug_srcinfo) }
.debug_sfnames0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev0 : { *(.debug_abbrev) }
.debug_line0 : { *(.debug_line) }
.debug_frame0 : { *(.debug_frame) }
.debug_str0 : { *(.debug_str) }
.debug_loc0 : { *(.debug_loc) }
.debug_macinfo0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames0 : { *(.debug_varnames) }

/* Altera debug extensions */
.debug_alt_sim_info 0 : { *(.debug_alt_sim_info) }
}
/* provide a pointer for the stack */

/*
* Don't override this, override the __alt_stack_* symbols instead.
*/
__alt_data_end = 0x02000000;

/*
* The next two symbols define the location of the default stack.You can
* override them to move the stack to a different memory.
*/
PROVIDE( __alt_stack_pointer = __alt_data_end );
PROVIDE( __alt_stack_limit= _end );

/*
* This symbol controls where the start of the heap is.If the stack is
* contiguous with the heap then the stack will contract as memory is
* allocated to the heap.
* Override this symbol to put the heap in a different memory.
*/
PROVIDE( __alt_heap_start= end );









Appendix B

/* generated.x
*
* Machine generated for a CPU named "cpu" as defined in:
* C:\\\\\\\\altera\\\\\\\\kits\\\\\\\\nios2_51\\\\\\\\examples\\\\\\\\verilog\\\\\\\\niosII_cyclone_1c20\\\\\\\\startupstandard\\\\\\\\software\\\\\\\\hello_world_small_1_syslib\\\\\\\\..\\\\\\\\..\\\\\\\\std_1c20.ptf
*
* Generated: 2006-01-25 21:04:12.273
*
*/

/*

DO NOT MODIFY THIS FILE

Changing this file will have subtle consequences
which will almost certainly lead to a nonfunctioning
system. If you do modify this file, be aware that your
changes will be overwritten and lost when this file
is generated again.

DO NOT MODIFY THIS FILE

*/

MEMORY
{
reset : ORIGIN = 0x00802000, LENGTH = 32
ext_flash : ORIGIN = 0x00000000, LENGTH = 8388608
ext_ram : ORIGIN = 0x02000000, LENGTH = 1048576
epcs_controller : ORIGIN = 0x02100000, LENGTH = 2048
sdram : ORIGIN = 0x01000000, LENGTH = 16777216
boot : ORIGIN = 0x00802020, LENGTH = 8160
Exception_UNUSED : ORIGIN = 0x00800800, LENGTH = 32
Exception : ORIGIN = 0x00800820, LENGTH = 2016
}

/* Define symbols for each memory base-address */
__alt_mem_ext_flash = 0x00000000 ;
__alt_mem_ext_ram = 0x02000000 ;
__alt_mem_epcs_controller = 0x02100000 ;
__alt_mem_sdram = 0x01000000 ;
__alt_mem_boot = 0x00802000 ;
__alt_mem_Exception = 0x00800800 ;



OUTPUT_FORMAT( "elf32-littlenios2",
"elf32-littlenios2",
"elf32-littlenios2" )
OUTPUT_ARCH( nios2 )
ENTRY( _start )

/* Do we need any of these for elf?
__DYNAMIC = 0;
*/

SECTIONS
{
.entry :
{
KEEP (*(.entry))
} > sdram


.text :
{
/*
* All code sections are merged into the text output section, along with
* the read only data sections.
*
*/

PROVIDE (stext = ABSOLUTE(.));

*(.interp)
*(.hash)
*(.dynsym)
*(.dynstr)
*(.gnu.version)
*(.gnu.version_d)
*(.gnu.version_r)
*(.rel.init)
*(.rela.init)
*(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
*(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
*(.rel.fini)
*(.rela.fini)
*(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
*(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
*(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
*(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
*(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
*(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
*(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
*(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
*(.rel.ctors)
*(.rela.ctors)
*(.rel.dtors)
*(.rela.dtors)
*(.rel.got)
*(.rela.got)
*(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*)
*(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
*(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*)
*(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
*(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*)
*(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
*(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*)
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
*(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
*(.rel.plt)
*(.rela.plt)

KEEP (*(.init))
*(.plt)
*(.text .stub .text.* .gnu.linkonce.t.*)

/* .gnu.warning sections are handled specially by elf32.em.*/

*(.gnu.warning.*)
KEEP (*(.fini))
PROVIDE (__etext = ABSOLUTE(.));
PROVIDE (_etext = ABSOLUTE(.));
PROVIDE (etext = ABSOLUTE(.));

*(.eh_frame_hdr)
/* Ensure the __preinit_array_start label is properly aligned.We
could instead move the label definition inside the section, but
the linker would then create the section even if it turns out to
be empty, which isn't pretty.*/
. = ALIGN(32 / 8);
PROVIDE (__preinit_array_start = ABSOLUTE(.));
*(.preinit_array)
PROVIDE (__preinit_array_end = ABSOLUTE(.));
PROVIDE (__init_array_start = ABSOLUTE(.));
*(.init_array)
PROVIDE (__init_array_end = ABSOLUTE(.));
PROVIDE (__fini_array_start = ABSOLUTE(.));
*(.fini_array)
PROVIDE (__fini_array_end = ABSOLUTE(.));
SORT(CONSTRUCTORS)
KEEP (*(.eh_frame))
*(.gcc_except_table)
*(.dynamic)
PROVIDE (__CTOR_LIST__ = ABSOLUTE(.));
KEEP (*(.ctors))
KEEP (*(SORT(.ctors.*)))
PROVIDE (__CTOR_END__ = ABSOLUTE(.));
PROVIDE (__DTOR_LIST__ = ABSOLUTE(.));
KEEP (*(.dtors))
KEEP (*(SORT(.dtors.*)))
PROVIDE (__DTOR_END__ = ABSOLUTE(.));
KEEP (*(.jcr))
. = ALIGN(32 / 8);
} >sdram =0x3a880100 /* NOP on Nios2 (big endian) */

.rodata :
{
PROVIDE (__ram_rodata_start = ABSOLUTE(.));
. = ALIGN(32 / 8);
*(.rodata .rodata.* .gnu.linkonce.r.*)
*(.rodata1)
. = ALIGN(32 / 8);
PROVIDE (__ram_rodata_end = ABSOLUTE(.));
} > sdram

PROVIDE (__flash_rodata_start = LOADADDR(.rodata));

.exceptions :AT (LOADADDR (.rodata) + SIZEOF (.rodata))
{
PROVIDE (__ram_exceptions_start = ABSOLUTE(.));
. = ALIGN(0x20);
*(.irq)
KEEP (*(.exceptions.entry.label));
KEEP (*(.exceptions.entry.user));
KEEP (*(.exceptions.entry));
KEEP (*(.exceptions.irqtest.user));
KEEP (*(.exceptions.irqtest));
KEEP (*(.exceptions.irqhandler.user));
KEEP (*(.exceptions.irqhandler));
KEEP (*(.exceptions.irqreturn.user));
KEEP (*(.exceptions.irqreturn));
KEEP (*(.exceptions.notirq.label));
KEEP (*(.exceptions.notirq.user));
KEEP (*(.exceptions.notirq));
KEEP (*(.exceptions.soft.user));
KEEP (*(.exceptions.soft));
KEEP (*(.exceptions.unknown.user));
KEEP (*(.exceptions.unknown));
KEEP (*(.exceptions.exit.label));
KEEP (*(.exceptions.exit.user));
KEEP (*(.exceptions.exit));
KEEP (*(.exceptions));
PROVIDE (__ram_exceptions_end = ABSOLUTE(.));
} > Exception

PROVIDE (__flash_exceptions_start = LOADADDR(.exceptions));

.rwdata (LOADADDR(.exceptions)+ SIZEOF (.exceptions)) :
{
PROVIDE (__ram_rwdata_start = ABSOLUTE(.));
. = ALIGN(32 / 8);
*(.got.plt) *(.got)
*(.data1)
*(.data .data.* .gnu.linkonce.d.*)

_gp = ABSOLUTE(. + 0x8000);
PROVIDE(gp = _gp);

*(.sdata .sdata.* .gnu.linkonce.s.*)
*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)

. = ALIGN(32 / 8);
_edata = ABSOLUTE(.);
PROVIDE (edata = ABSOLUTE(.));
PROVIDE (__ram_rwdata_end = ABSOLUTE(.));
} > sdram

PROVIDE (__flash_rwdata_start = LOADADDR(.rwdata));

.bss :
{
__bss_start = ABSOLUTE(.);
PROVIDE (__sbss_start = ABSOLUTE(.));
PROVIDE (___sbss_start = ABSOLUTE(.));

*(.dynsbss)
*(.sbss .sbss.* .gnu.linkonce.sb.*)
*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
*(.scommon)

PROVIDE (__sbss_end = ABSOLUTE(.));
PROVIDE (___sbss_end = ABSOLUTE(.));

*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON)

. = ALIGN(32 / 8);
__bss_end = ABSOLUTE(.);
} > sdram

/*
* One output section for each of the available partitions. These are not
* used by default, but can be used by users applications using the .section
* directive.
*
* The memory partition used for the heap is treated inspecial way, i.e. a
* symbol is added to point to the heap start.
*
* Note that when running from flash, these sections are not loaded by the
* HAL.
*
*/

.ext_flash :
{
PROVIDE (_alt_partition_ext_flash_start = ABSOLUTE(.));
*(.ext_flash .ext_flash.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_ext_flash_end = ABSOLUTE(.));
} > ext_flash

PROVIDE (_alt_partition_ext_flash_load_addr = LOADADDR(.ext_flash));

.ext_ram :
{
PROVIDE (_alt_partition_ext_ram_start = ABSOLUTE(.));
*(.ext_ram .ext_ram.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_ext_ram_end = ABSOLUTE(.));
} > ext_ram

PROVIDE (_alt_partition_ext_ram_load_addr = LOADADDR(.ext_ram));

.epcs_controller :
{
PROVIDE (_alt_partition_epcs_controller_start = ABSOLUTE(.));
*(.epcs_controller .epcs_controller.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_epcs_controller_end = ABSOLUTE(.));
} > epcs_controller

PROVIDE (_alt_partition_epcs_controller_load_addr = LOADADDR(.epcs_controller));

.sdram :
{
PROVIDE (_alt_partition_sdram_start = ABSOLUTE(.));
*(.sdram .sdram.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_sdram_end = ABSOLUTE(.));
_end = ABSOLUTE(.);
end = ABSOLUTE(.);
} > sdram

PROVIDE (_alt_partition_sdram_load_addr = LOADADDR(.sdram));

.boot :
{
PROVIDE (_alt_partition_boot_start = ABSOLUTE(.));
*(.boot .boot.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_boot_end = ABSOLUTE(.));
} > boot

PROVIDE (_alt_partition_boot_load_addr = LOADADDR(.boot));

.Exception :
{
PROVIDE (_alt_partition_Exception_start = ABSOLUTE(.));
*(.Exception .Exception.*)
. = ALIGN(32 / 8);
PROVIDE (_alt_partition_Exception_end = ABSOLUTE(.));
} > Exception

PROVIDE (_alt_partition_Exception_load_addr = LOADADDR(.Exception));

/*
* Stabs debugging sections.
*
*/

.stab0 : { *(.stab) }
.stabstr0 : { *(.stabstr) }
.stab.excl0 : { *(.stab.excl) }
.stab.exclstr0 : { *(.stab.exclstr) }
.stab.index0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment0 : { *(.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 */
.debug0 : { *(.debug) }
.line0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo0 : { *(.debug_srcinfo) }
.debug_sfnames0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev0 : { *(.debug_abbrev) }
.debug_line0 : { *(.debug_line) }
.debug_frame0 : { *(.debug_frame) }
.debug_str0 : { *(.debug_str) }
.debug_loc0 : { *(.debug_loc) }
.debug_macinfo0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames0 : { *(.debug_varnames) }

/* Altera debug extensions */
.debug_alt_sim_info 0 : { *(.debug_alt_sim_info) }
}
/* provide a pointer for the stack */

/*
* Don't override this, override the __alt_stack_* symbols instead.
*/
__alt_data_end = 0x02000000;

/*
* The next two symbols define the location of the default stack.You can
* override them to move the stack to a different memory.
*/
PROVIDE( __alt_stack_pointer = __alt_data_end );
PROVIDE( __alt_stack_limit= _end );

/*
* This symbol controls where the start of the heap is.If the stack is
* contiguous with the heap then the stack will contract as memory is
* allocated to the heap.
* Override this symbol to put the heap in a different memory.
*/
PROVIDE( __alt_heap_start= end );


Tag page
Viewing 15 of 27 comments: view all
Wholesale Lingerie from AC Lingerie Distributors, the premier fine lingerie distributor. Fine wholesale lingerie. We are happy to introduce ourselves as a famous professional manufacturer and supplier of wholesale Sexy Lingerie.Kellan Lutz's Sexy Underwear Shoot For Calvin Klein.
Posted 05:07, 23 Mar 2010
replica handbas Chanel Lambskin Leather Stravinsky Snake Texture Handbag 1802 Co 98.40 Chanel Lambskin Leather Ultra soft studded lambskin flap bag 180 128.00 Chanel Lambskin Leather Ultra soft studded lambskin flap bag 180 128.00 Balenciaga Lambskin Leather Giant Pom Pon Handbag 084838 Black 163.20 Balenciaga Lambskin Leather Giant Pom Pon Handbag 084838 Coffee 163.20 Balenciaga Lambskin Leather Giant Part Time Bag 084828 175.20 Chanel Embroidered Leather Discs CC Logo Tote Bag 2085 Black 151.20 Chanel Embroidered Leather Discs CC Logo Tote Bag 2043 134.40 Chanel Sheep-skin leather Ladies Leather Handbag C29101 Black Co 159.20 Chanel Lambskin Leather Evening Clutch Bag 2223 120.00 Balenciaga Lambskin Leather Large Aqua Hook Line Handbag 8392 Bl 140.80 Balenciaga Lambskin Leather Motorcycle Twegy Saddle Bag 084212 G 203.20 Balenciaga Lambskin Leather Giant City Purse Earth Bag 084324a P 190.40 Balenciaga Lambskin Leather Motorcycle Twegy Saddle Bag 084212 R 203.20 Balenciaga Lambskin Leather Giant City Purse Earth Bag 084324a P 190.40 Balenciaga Lambskin Leather Large Aqua Hook Line Handbag 8392 140.80 Balenciaga Lambskin Leather Large Aqua Hook Line Handbag 8391 148.00 Balenciaga Lambskin Leather Large Aqua Hook Line Handbag 8390 148.00 Balenciaga Lambskin Leather Hook Bag 820 148.00 Balenciaga Lambskin Leather Large Aqua Hook Line Handbag 8391 Wh 148.00 Balenciaga Lambskin Leather Large Aqua Hook Line Handbag 8392 Co 140.80 Chanel Lambskin Leather Stravinsky Snake Texture Handbag 1802 Co 98.40 Balenciaga Lambskin Leather Motorcycle Twegy Saddle Bag 084212 G 203.20
Posted 10:07, 23 Mar 2010
The story comes with a young man. He comes from a small town.sohbetHe goes to the prosperoussohpet city New York. He is ambitious to own a big house,chat siteleriyonja a luxurious car. He has the confidence that one daysohbetnetlog his dream will come true.sohbet chatchat sitelerimirc indir He imagines the day his wife enjoy the happiness together with him.dini sohbetkızlarla sohbet He seeks and charity every opportunity to win the economic trade. He tries his best to earn money. One day, his entire dream comes true. He comes back home.dini sohbetkızlarla sohbetsohbet et He picks up his wife to the big city. He was invited to the party.muhabbetsohbet He brings his wife to take part in the party. cinsel sohbetchat His workmates were disappointed for his old wife.His wife was also very sad that she want to go back to the town. He knows that today hesohbet odalarıÇetsohbet odaları owns so much fortunate is from his tender and kind wife from many aspects. The reason why she looks old is because of him. He do not want his wife go back. He wants her live with him together. He don't want her suffer so much miserable life as before. While, he was so handsome is totally different from his wife. He wonders and considers one day after one day. Soon, the day is drawing near. He doesn’t know what he could do to leave his wife. Suddenly, an idea comes into mind. biber hapıHe goes to the jewelry store. He asked the islami sohbetchat sitelerialmanya sohbetprice of the jewelry,fx15lw6090rx1biber hapı then he puts his money dizi izlefilm izlemp3 indirmp3 dinlelig tv izleon the counter with the twice price.
Posted 16:03, 26 Mar 2010
Ruhoy said lotions, creams, gels and skin patches are to blame for a imju fiberwig mascara amount of the APIs in ground water. She encouraged consumers to use Shu Uemura Eyelash Curler products sparingly and doctors salon hair products lower-dosage levels to cut down APIs. AUSTIN, Minn., Mar 25, 2010 (salon hair products) -- 1935 was the year legends got started: Amelia Earhart became the first person to fly solo from Honolulu to Oakland. Monopoly debuted. Elvis Presley was born. And two products destined to become pop culture icons were introduced: Dinty imju fiberwig mascara products and Hormel(R) Shu Uemura Eyelash Curler . Today, these brands can be found in virtually every pantry in America.
Posted 03:15, 27 Mar 2010
He do not want his wife go back. He wants her live with him together. He don't want her suffer so much miserable life as before. logo design
Posted 11:05, 3 Apr 2010
While strapless mother of the bride dresses dresses will always be a popular style of wedding dress, 2010 brings about more options for Evening gowns covering up. Formal shrugs and bolero jackets are available from many ugg boots wedding dress designers in 2010, along with options for adding straps for the reception. Pick-up style wedding dresses have been making their way out of Bridal gowns wedding fashion for the last few years, but 2010 Wedding gowns signals an end to that wedding trend. While some discount wedding Cocktail Dresses lines may feature a dress Flower Girl Dresses or two uggs bootswith the pick-up style Evening Dresses skirt, they won’t dominate the wedding fashion scene like they did in Columbia Sportswear the past. Colors other than white will continue to play a part in 2010 wedding trends. Some wedding dresses Bridal Dress will feature small Bridesmaid Dresses splashes of color, such as a contrasting sash. Other popular wedding dress Wedding Dresses colors will be champagne, deep ivory, and antique Wedding Dress lace wigs gold.
Posted 06:14, 8 Apr 2010
sheepskin boots sheepskin boots sheepskin ugg boots sheepskin ugg boots ugg boots ugg boots uggs uggs ugg australia ugg australia ugg sale ugg sale ugg boots sale ugg boots sale cheap ugg boots cheap ugg boots winter boots winter boots discount ugg boots discount ugg boots cheap uggs cheap uggs uggs on sale uggs on sale australia ugg boots australia ugg boots ugg boots 2010 ugg boots 2010 ugg boots womens ugg boots womens womens uggs womens uggs womens ugg boots womens ugg boots bailey button ugg boots bailey button ugg boots classic tall ugg boots classic tall ugg boots classic short ugg boots classic short ugg boots classic cardy ugg boots classic cardy ugg boots classic mini ugg boots classic mini ugg boots metallic ugg boots metallic ugg boots nightfall ugg boots nightfall ugg boots sundance ii ugg boots sundance ii ugg boots ultra tall ugg boots ultra tall ugg boots ultra short ugg boots ultra short ugg boots Abercrombie And Fitch Abercrombie And Fitch Abercrombie Abercrombie Abercrombie Clothing Abercrombie Clothing Abercrombie UK Abercrombie UK Abercrombie London Abercrombie London Abercrombie Fitch Abercrombie Fitch Abercrombie Outlet Abercrombie Outlet Abercrombie Jeans Abercrombie Jeans Abercrombie Pants Abercrombie Pants Abercrombie Tees Abercrombie Tees Abercrombie Shorts Abercrombie Shorts Abercrombie Sweater Abercrombie Sweater Abercrombie Outerwear Abercrombie Outerwear Abercrombie Hoodies Abercrombie Hoodies Abercrombie Polo Abercrombie Polo Abercrombie ShirtsAbercrombie Shirts abercrombie henleys crew abercrombie henleys crew hollister hollister hollister uk hollister uk abercrombie mens abercrombie mens abercrombie womens abercrombie womens Ruehl 925 Ruehl 925 MBT MBT MBT Shoes MBT Shoes MBT sale MBT sale MBT UK MBT UK MBT Fitness Shoes MBT Fitness Shoes MBT Sale Shoes MBT Sale Shoes MBT Outlet MBT Outlet MBT Lami shoes MBT Lami shoes MBT M.Walk shoes MBT M.Walk shoes MBT Sport Shoes MBT Sport Shoes ed hardy clothing ed hardy clothing Abercrombie Clothing Abercrombie Clothing Cartier Jewelry Cartier Jewelry GHD GHD G Star Raw G Star Raw Abercrombie And Fitch Abercrombie And Fitch ugg boots ugg boots tiffany jewellery tiffany jewellery Gucci Gucci
Posted 06:46, 12 Apr 2010
Abercrombie & Fitch (NYSE: ANF), abercrombie henleys crew Abercrombie Hoodies the pricey teen clothing retailer, said today it will continue to markdown Abercrombie London its clothes in order to boost sales.ugg boots Jonathan Ramsden, CFO for Abercrombie, said the company will give up Abercrombie Clothing margins to improve its sales. In February Abercrombie Outerwear Abercrombie said same-store sales were abercrombie mens hollister uk up Abercrombie Fitch Abercrombie Shorts Abercrombie Tees 5% year-over-year, but average abercrombie womens unit prices were down 14% due to discounting. Abercrombie initially refused to markdown its clothing at the start of the recession in 2008 and lost market lace wigs to rivals American Eagle Outfitters hollister Ruehl 925 (NYSE: AEO) Abercrombie and Aeropostale (NYSE: ARO). Sales declined dramatically for Abercrombie during wedding dresses Abercrombie Shirts the recession Abercrombie Outlet and the company posted nine consecutive quarters Abercrombie UK of same-store Abercrombie Pants sale declines. Mr. Ramsden said the company hopes to report same-store sales increases for Abercrombie Polo 2010. While Abercrombie And Fitch impressive, given that every month in 2010 Abercrombie Sweater will be compared against double-digit drops in Abercrombie Jeans sales is not too difficult to achieve. ugg boots
Posted 07:17, 12 Apr 2010
Fitted throwback hats for your favorite sports teams from Mitchell and Ness Nostalgia Co.Looking for the best value in throwback jerseys, uniforms and sports clothing?Not that the games were throwbacks to the low-scoring games of the 1990's. We love our retro jersey at Page 2. Here are our favorites from the NBA. Mitchell and Ness Sporting Goods in Philadelphia. A quick look at the Jazz in their green throwback jerseys.The throwbacks were still Cool Base polyester material or whatever hip name Majestic has trademarked these days.ue to numerous requests, we have added a size to the top end of some of our retro jersey..
Posted 03:29, 13 Apr 2010
And then we will offer players the suggestions of level 20 to 30. Convert the thread and leather into the good stuff,Buy Aion CD Key, or rather, aion items which are useful and helpful to all you guys when you are fighting. You can search your recipes and check to see what you actually need and then make a plan on making and make just that. You can pick fluxes up if they are cheap and factor them into your calculations here. If you are going to prepare to make considerable amount of 13-18 armor,Aion Abyss Point Leveling,Urtem-Elyos, it is preferable for you to go on raw material conversion all the way to 30 and do this step from 30-40 roughly. Also,Thor-Elyos,Aion Epic,Nezekan-Asmodians, this all relays on what you plan to do with tailoring. If you are just doing this to get to the orange recipes later, toss this out the window and work order it for speed of aion power leveling.(cheap aion cd keys and aion time card are hot on sale)
Posted 08:56, 13 Apr 2010
Nice story about this.
Great Nice Pictures
causes back pain knee high shoes lizlange maternity fishing boats sale flu incubation period remedies sore throat cost breast implants muscle weight gain surgery breast reduction girls party ideas women laptop bags car brake parts continuing nursing education cost breast augmentation protein whey powder baby slings carriers bed bugs pictures bedding duvet covers phone pay as you go outdoor swing sets discount dinnerware sets coffee espresso machines salton yogurt maker hair color pictures pictures of haircuts asvab practice test herpes photos easy cooking recipes toy dog breeds herpes simplex 1 personalized dog tags stress fracture foot occupational therapy schools frontline plus cats fleas on humans physical therapy salary scabies pictures pictures of shingles what is blood pressure ibuprofen side effects pictures of ringworm gendongan bayi kain cukin ring sling pouch sling perlengkapan bayi selendang bayi nursing cover selendang baby perlengkapan bayi baru lahir bayi bayi lucu foto bayi parish vintage ebooks download tv series download manga free download make money online health information cell phone review disorders anxiety psat practice test blood preasure smart water filter filter pur water weight loss effects blood pressure side effects socks over knee socks dress Hot News Today Jual Beli Make Money Celebrity Gossip Kesehatan Alternatif Gosip Selebritis celebrity photos celebrity news hot celebrities celebrity blog kesehatan info kesehatan kesehatan kerja pelayanan kesehatan indonesia artis foto artis gambar artis selebriti iklan iklan gratis jual online handphone daily news breaking news local news online news food dehydrator tray massage chair ijoy homedics massage shiatsu evening gown dress evening wedding dress dry face skin gold toe sock window coverings blinds blinds for windows lip gloss cosmetics folding table chairs women high heels stockings high heels treatment of pain chlorine generation makeup lighted mirror pain management specialist lawn pest control garden pest control joint pain causes
Posted 16:08, 20 Jul 2010
Viewing 15 of 27 comments: view all
You must login to post a comment.
SourceForge.net