OUTPUT_ARCH(arm) TARGET("elf32-littlearm") SEARCH_DIR(.) ENTRY(_start) /* The size of the single stack used by the application */ PROVIDE(SVC_STACK_SIZE = 0x400); PROVIDE(IRQ_STACK_SIZE = 0x100); PROVIDE(STACK_SIZE = 0x1000); PROVIDE(HEAP_SIZE = 0x0800); SECTIONS { . =0x20000200; .text : { ./mcom_runtime/pll.o (.text); ./mcom_runtime/uart.o (.text); ./a.o (.text); } .data : { ./a.o (.data); ./a.o (.sdata); ./a.o (.rodata); ./mcom_runtime/pll.o (.data); ./mcom_runtime/pll.o (.sdata); ./mcom_runtime/pll.o (.rodata); ./mcom_runtime/uart.o (.data); ./mcom_runtime/uart.o (.sdata); ./mcom_runtime/uart.o (.rodata); } .ARM.exidx : { __exidx_start = .; *(.ARM.exidx* .gnu.linkonce.armexidx.*) __exidx_end = .; } _gp = ALIGN(8); .lit4 : { *(.lit4) } . = ALIGN(8); PROVIDE (edata = .); _edata = .; _fbss = .; .sbss : { *(.sbss*) *(.scommon) *(*ABS*)} .bss : { __bss_start__ = .; *(.bss); *(COMMON) __bss_end__ = .; } .DSPX_tmp(NOLOAD): { * (.DSP0_tmp); * (.DSP1_tmp); * (.DSP2_tmp); * (.DSP3_tmp); } . = ALIGN(128); PROVIDE (end = .); PROVIDE (__end__ = .); __HeapBase = ALIGN(16); . += HEAP_SIZE; __HeapLimit = ALIGN(16); . += IRQ_STACK_SIZE; .stack : { __irq_stack1_top__ = .; . += IRQ_STACK_SIZE; __irq_stack0_top__ = .; . += SVC_STACK_SIZE; __svc_stack1_top__ = .; . += SVC_STACK_SIZE; __svc_stack0_top__ = .; . += STACK_SIZE; PROVIDE(__stack = ALIGN(16)); . = ALIGN(8); } . =0x3a400000; .DSP0_data : { } .DSP0_bss : { *(.DSP0_bss); } . =0x3a600000; .DSP0_text : { } . =0x3a420000; .DSP1_data : { } .DSP1_bss : { *(.DSP1_bss); } . =0x3a620000; .DSP1_text : { } . =0xb8c00000; .DSP2_data : { } .DSP2_bss : { *(.DSP2_bss); } . =0xb8c40000; .DSP2_text : { } . =0xb9000000; .DSP3_data : { } .DSP3_bss : { *(.DSP3_bss); } . =0xb9040000; .DSP3_text : { } }