#include "config.h" /* These output formats should be in the config-files */ #ifdef CPU_COLDFIRE OUTPUT_FORMAT(elf32-m68k) #elif defined(CPU_ARM) OUTPUT_FORMAT(elf32-littlearm) #else OUTPUT_FORMAT(elf32-sh) #endif #ifdef DEBUG #define STUBOFFSET 0x10000 #else #define STUBOFFSET 0 #endif #if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300) #define ARCH_IRIVER #endif #if (CONFIG_CPU==PP5002) || (CONFIG_CPU==PP5020) #define ARCH_IPOD #endif #ifdef ARCH_IRIVER #define DRAMORIG 0x31000000 #define IRAMORIG 0x1000c000 #define IRAMSIZE 0xc000 #elif defined(ARCH_IPOD) #define DRAMORIG 0x00000000 #define IRAMORIG 0x4000c000 #define IRAMSIZE 0xc000 #elif CONFIG_CPU == PNX0101 #define DRAMORIG 0xc00000 + STUBOFFSET #define IRAMORIG 0x408000 #define IRAMSIZE 0x8000 #else #define DRAMORIG 0x09000000 + STUBOFFSET #endif #define PLUGIN_LENGTH PLUGIN_BUFFER_SIZE #define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGIN_LENGTH - CODEC_SIZE #define CODEC_ORIGIN (DRAMORIG + (DRAMSIZE)) #define PLUGIN_ORIGIN (CODEC_ORIGIN + CODEC_SIZE) #ifdef CODEC #define THIS_LENGTH CODEC_SIZE #define THIS_ORIGIN CODEC_ORIGIN #else #define THIS_LENGTH PLUGIN_LENGTH #define THIS_ORIGIN PLUGIN_ORIGIN #endif MEMORY { PLUGIN_RAM : ORIGIN = THIS_ORIGIN, LENGTH = THIS_LENGTH #if defined(ARCH_IRIVER) || defined(ARCH_IPOD) || (CONFIG_CPU==PNX0101) PLUGIN_IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE #endif } SECTIONS { .header : { _plugin_start_addr = .; plugin_start_addr = .; KEEP(*(.header)) } > PLUGIN_RAM .text : { *(.text*) #if (CONFIG_CPU==PP5020) || (CONFIG_CPU==PNX0101) || (CONFIG_CPU==PP5002) *(.glue_7) *(.glue_7t) #endif } > PLUGIN_RAM .rodata : { *(.rodata*) . = ALIGN(0x4); } > PLUGIN_RAM .data : { *(.data*) #if defined(ARCH_IRIVER) || defined(ARCH_IPOD) || (CONFIG_CPU==PNX0101) iramcopy = .; #endif } > PLUGIN_RAM /DISCARD/ : { *(.eh_frame) } #if defined(ARCH_IRIVER) || defined(ARCH_IPOD) || (CONFIG_CPU==PNX0101) .iram IRAMORIG : AT ( iramcopy) { iramstart = .; *(.icode) *(.irodata) *(.idata) iramend = .; } > PLUGIN_IRAM .ibss (NOLOAD) : { iedata = .; *(.ibss) . = ALIGN(0x4); iend = .; } > PLUGIN_IRAM .bss ADDR(.data) + SIZEOF(.data) + SIZEOF(.iram): #else .bss : #endif { *(.bss*) *(COMMON) . = ALIGN(0x4); _plugin_end_addr = .; plugin_end_addr = .; } > PLUGIN_RAM /* Special trick to avoid a linker error when no other sections are left after garbage collection (plugin not for this platform) */ .comment 0 : { KEEP(*(.comment)) } }