split boot.lds and move it into the target tree
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16855 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
8406d92475
commit
82c52302bd
14 changed files with 837 additions and 455 deletions
|
@ -11,7 +11,7 @@ INCLUDES= $(TARGET_INC) -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I. -I$(OBJDIR)
|
|||
-I$(BUILDDIR)
|
||||
|
||||
DEPFILE = $(OBJDIR)/dep-bootloader
|
||||
LDS := $(FIRMDIR)/boot.lds
|
||||
LDS := $(FIRMDIR)/target/$(CPU)/$(MANUFACTURER)/boot.lds
|
||||
|
||||
ifdef DEBUG
|
||||
DEFINES := -DDEBUG
|
||||
|
|
|
@ -1,454 +0,0 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
#ifdef CPU_COLDFIRE
|
||||
OUTPUT_FORMAT(elf32-m68k)
|
||||
INPUT(target/coldfire/crt0.o)
|
||||
#elif defined (CPU_ARM)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
#ifdef CPU_PP
|
||||
INPUT(target/arm/crt0-pp-bl.o)
|
||||
#elif CONFIG_CPU==DM320
|
||||
INPUT(target/arm/tms320dm320/crt0.o)
|
||||
#elif CONFIG_CPU==S3C2440
|
||||
INPUT(target/arm/s3c2440/crt0.o)
|
||||
#elif defined(CPU_TCC77X)
|
||||
INPUT(target/arm/tcc77x/crt0.o)
|
||||
#elif defined(CPU_TCC780X)
|
||||
INPUT(target/arm/tcc780x/crt0.o)
|
||||
#elif CONFIG_CPU==IMX31L
|
||||
INPUT(target/arm/imx31/crt0.o)
|
||||
#else
|
||||
INPUT(target/arm/crt0.o)
|
||||
#endif
|
||||
#else
|
||||
OUTPUT_FORMAT(elf32-sh)
|
||||
INPUT(target/sh/crt0.o)
|
||||
#endif
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#ifdef IRIVER_H100_SERIES
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif defined(IRIVER_H300_SERIES)
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x003f0000
|
||||
#define FLASHSIZE 4M
|
||||
#elif defined(IAUDIO_X5) || defined(IAUDIO_M5)
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x20000
|
||||
#define FLASHORIG 0x00010000
|
||||
#define FLASHSIZE 4M
|
||||
#elif defined(IAUDIO_M3)
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x00010000
|
||||
#define FLASHSIZE 4M
|
||||
#elif CONFIG_CPU == PP5020
|
||||
#define DRAMORIG 0x10000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
|
||||
#define DRAMORIG 0x10000000
|
||||
#ifndef IRAMORIG
|
||||
#define IRAMORIG 0x40000000
|
||||
#endif
|
||||
#define IRAMSIZE 0x20000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif CONFIG_CPU == S3C2440
|
||||
#define DRAMORIG 0x30000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 4K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
#elif CONFIG_CPU == DM320
|
||||
#define DRAMORIG 0x00900000
|
||||
#define IRAMORIG 0x00000000
|
||||
#define IRAMSIZE 16K
|
||||
#define FLASHORIG 0x00100000
|
||||
#define FLASHSIZE 8M
|
||||
#elif CONFIG_CPU == PP5002
|
||||
#define DRAMORIG 0x28000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif CONFIG_CPU == IMX31L
|
||||
#define DRAMORIG (0x02000000-0x00100000)
|
||||
#undef DRAMSIZE
|
||||
#define DRAMSIZE (1 << 20) /* Limit 1 MB for bootloader */
|
||||
#define IRAM DRAM
|
||||
#define IRAMORIG 0x1FFFC000
|
||||
#define IRAMSIZE 16K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
#elif defined(CPU_TCC77X)
|
||||
#define DRAMORIG 0x20000000
|
||||
#define IRAMORIG 0x00000000
|
||||
#define IRAMSIZE 64K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
#elif defined(CPU_TCC780X)
|
||||
#define DRAMORIG 0x20000000
|
||||
#define IRAMORIG 0x00000000
|
||||
#define IRAMSIZE 4K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
#else
|
||||
#define DRAMORIG 0x09000000
|
||||
#define IRAMORIG 0x0f000000
|
||||
#define IRAMSIZE 0x1000
|
||||
#define FLASHORIG 0x02000000 + ROM_START
|
||||
#define FLASHSIZE 256K - ROM_START
|
||||
#endif
|
||||
|
||||
#if defined(CPU_TCC77X) || defined(CPU_TCC780X)
|
||||
MEMORY
|
||||
{
|
||||
#ifdef TCCBOOT
|
||||
DRAM : ORIGIN = DRAMORIG + DRAMSIZE - 0x100000, LENGTH = 0x100000
|
||||
#else
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
#endif
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
}
|
||||
#elif CONFIG_CPU == IMX31L
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
}
|
||||
#elif !defined(CPU_PP) && (CONFIG_CPU!=S3C2440)
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
|
||||
}
|
||||
#endif
|
||||
|
||||
SECTIONS
|
||||
#ifdef CPU_PP
|
||||
{
|
||||
. = IRAMORIG;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
|
||||
/* The bss section is too large for IRAM - we just move it 16MB into the
|
||||
DRAM */
|
||||
|
||||
. = (DRAMORIG+16*1024*1024);
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
_end = .;
|
||||
}
|
||||
}
|
||||
#elif (CONFIG_CPU==S3C2440)
|
||||
{
|
||||
. = DRAMORIG + 0x1000000;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
}
|
||||
}
|
||||
#elif defined(CPU_TCC77X) || defined(CPU_TCC780X)
|
||||
{
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text)
|
||||
*(.text*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
} > DRAM
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
*(.rodata.*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > DRAM
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
}
|
||||
#elif (CONFIG_CPU==DM320)
|
||||
{
|
||||
. = DRAMORIG + 0x1000000;
|
||||
|
||||
.text : {
|
||||
loadaddress = .;
|
||||
_loadaddress = .;
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
. = ALIGN(0x4);
|
||||
} > DRAM
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata) /* problems without this, dunno why */
|
||||
*(.rodata*)
|
||||
*(.rodata.str1.1)
|
||||
*(.rodata.str1.4)
|
||||
. = ALIGN(0x4);
|
||||
|
||||
/* Pseudo-allocate the copies of the data sections */
|
||||
_datacopy = .;
|
||||
} > DRAM
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > DRAM
|
||||
|
||||
.bss :
|
||||
{
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
|
||||
.vectors IRAMORIG :
|
||||
{
|
||||
_vectorsstart = .;
|
||||
KEEP(*(.resetvectors));
|
||||
*(.resetvectors);
|
||||
KEEP(*(.vectors));
|
||||
*(.vectors);
|
||||
_vectorsend = .;
|
||||
} AT > DRAM
|
||||
_vectorscopy = LOADADDR(.vectors);
|
||||
}
|
||||
#elif (CONFIG_CPU==IMX31L)
|
||||
{
|
||||
. = DRAMORIG;
|
||||
|
||||
.text :
|
||||
{
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
*(.icode)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
. = ALIGN(0x4);
|
||||
} > DRAM
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata) /* problems without this, dunno why */
|
||||
*(.rodata*)
|
||||
*(.rodata.str1.1)
|
||||
*(.rodata.str1.4)
|
||||
. = ALIGN(0x4);
|
||||
|
||||
/* Pseudo-allocate the copies of the data sections */
|
||||
_datacopy = .;
|
||||
} > DRAM
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > IRAM
|
||||
|
||||
.bss :
|
||||
{
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
|
||||
.vectors 0x0 :
|
||||
{
|
||||
_vectorsstart = .;
|
||||
*(.vectors);
|
||||
KEEP(*(.vectors));
|
||||
_vectorsend = .;
|
||||
} AT > DRAM
|
||||
_vectorscopy = LOADADDR(.vectors);
|
||||
}
|
||||
#else
|
||||
{
|
||||
.vectors :
|
||||
{
|
||||
#if defined(IAUDIO_X5) || defined(IAUDIO_M5) || defined(IAUDIO_M3)
|
||||
*(.init.text)
|
||||
#endif
|
||||
_datacopy = .;
|
||||
} > FLASH
|
||||
|
||||
.data : AT ( _datacopy )
|
||||
{
|
||||
_datastart = .;
|
||||
KEEP(*(.resetvectors));
|
||||
*(.resetvectors);
|
||||
KEEP(*(.vectors));
|
||||
*(.vectors);
|
||||
. = ALIGN(0x200);
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = .;
|
||||
. = ALIGN(0x10); /* Maintain proper alignment for .text section */
|
||||
} > IRAM
|
||||
|
||||
/* TRICK ALERT! Newer versions of the linker don't allow output sections
|
||||
to overlap even if one of them is empty, so advance the location pointer
|
||||
"by hand" */
|
||||
.text LOADADDR(.data) + SIZEOF(.data) :
|
||||
{
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
. = ALIGN(0x4);
|
||||
} > FLASH
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
. = ALIGN(0x4);
|
||||
_iramcopy = .;
|
||||
} > FLASH
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > IRAM
|
||||
|
||||
#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) \
|
||||
|| defined(IAUDIO_X5) || defined(IAUDIO_M5) || defined(IAUDIO_M3)
|
||||
.bss DRAMORIG+0x800000:
|
||||
#else
|
||||
.bss :
|
||||
#endif
|
||||
{
|
||||
_edata = .;
|
||||
*(.ibss)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
#if defined(IRIVER_H100_SERIES) || defined(IRIVER_H300_SERIES) \
|
||||
|| defined(IAUDIO_X5) || defined(IAUDIO_M5) || defined(IAUDIO_M3)
|
||||
} > DRAM
|
||||
#else
|
||||
} > IRAM
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif
|
84
firmware/target/arm/imx31/boot.lds
Normal file
84
firmware/target/arm/imx31/boot.lds
Normal file
|
@ -0,0 +1,84 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/imx31/crt0.o)
|
||||
|
||||
#define DRAMSIZE (1 << 20) /* Limit 1 MB for bootloader */
|
||||
|
||||
#define DRAMORIG (0x02000000-0x00100000)
|
||||
#define IRAM DRAM
|
||||
#define IRAMORIG 0x1FFFC000
|
||||
#define IRAMSIZE 16K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = DRAMORIG;
|
||||
|
||||
.text :
|
||||
{
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
*(.icode)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
. = ALIGN(0x4);
|
||||
} > DRAM
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata) /* problems without this, dunno why */
|
||||
*(.rodata*)
|
||||
*(.rodata.str1.1)
|
||||
*(.rodata.str1.4)
|
||||
. = ALIGN(0x4);
|
||||
|
||||
/* Pseudo-allocate the copies of the data sections */
|
||||
_datacopy = .;
|
||||
} > DRAM
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > IRAM
|
||||
|
||||
.bss :
|
||||
{
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
|
||||
.vectors 0x0 :
|
||||
{
|
||||
_vectorsstart = .;
|
||||
*(.vectors);
|
||||
KEEP(*(.vectors));
|
||||
_vectorsend = .;
|
||||
} AT > DRAM
|
||||
_vectorscopy = LOADADDR(.vectors);
|
||||
}
|
69
firmware/target/arm/ipod/boot.lds
Normal file
69
firmware/target/arm/ipod/boot.lds
Normal file
|
@ -0,0 +1,69 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/crt0-pp-bl.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#if CONFIG_CPU == PP5020
|
||||
#define DRAMORIG 0x10000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
|
||||
#define DRAMORIG 0x10000000
|
||||
#ifndef IRAMORIG
|
||||
#define IRAMORIG 0x40000000
|
||||
#endif
|
||||
#define IRAMSIZE 0x20000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif CONFIG_CPU == PP5002
|
||||
#define DRAMORIG 0x28000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#endif
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = IRAMORIG;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
|
||||
/* The bss section is too large for IRAM - we just move it 16MB into the
|
||||
DRAM */
|
||||
|
||||
. = (DRAMORIG+16*1024*1024);
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
_end = .;
|
||||
}
|
||||
}
|
53
firmware/target/arm/iriver/boot.lds
Normal file
53
firmware/target/arm/iriver/boot.lds
Normal file
|
@ -0,0 +1,53 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/crt0-pp-bl.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x10000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = IRAMORIG;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
|
||||
/* The bss section is too large for IRAM - we just move it 16MB into the
|
||||
DRAM */
|
||||
|
||||
. = (DRAMORIG+16*1024*1024);
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
_end = .;
|
||||
}
|
||||
}
|
53
firmware/target/arm/olympus/boot.lds
Normal file
53
firmware/target/arm/olympus/boot.lds
Normal file
|
@ -0,0 +1,53 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/crt0-pp-bl.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x10000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = IRAMORIG;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
|
||||
/* The bss section is too large for IRAM - we just move it 16MB into the
|
||||
DRAM */
|
||||
|
||||
. = (DRAMORIG+16*1024*1024);
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
_end = .;
|
||||
}
|
||||
}
|
50
firmware/target/arm/s3c2440/boot.lds
Normal file
50
firmware/target/arm/s3c2440/boot.lds
Normal file
|
@ -0,0 +1,50 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/s3c2440/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x30000000
|
||||
#define IRAMORIG 0x40000000
|
||||
#define IRAMSIZE 4K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = DRAMORIG + 0x1000000;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
}
|
||||
}
|
56
firmware/target/arm/sandisk/boot.lds
Normal file
56
firmware/target/arm/sandisk/boot.lds
Normal file
|
@ -0,0 +1,56 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/crt0-pp-bl.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x10000000
|
||||
#ifndef IRAMORIG
|
||||
#define IRAMORIG 0x40000000
|
||||
#endif
|
||||
#define IRAMSIZE 0x20000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = IRAMORIG;
|
||||
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
_dataend = . ;
|
||||
}
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
}
|
||||
|
||||
/* The bss section is too large for IRAM - we just move it 16MB into the
|
||||
DRAM */
|
||||
|
||||
. = (DRAMORIG+16*1024*1024);
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
_end = .;
|
||||
}
|
||||
}
|
62
firmware/target/arm/tcc77x/boot.lds
Normal file
62
firmware/target/arm/tcc77x/boot.lds
Normal file
|
@ -0,0 +1,62 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/tcc77x/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x20000000
|
||||
#define IRAMORIG 0x00000000
|
||||
#define IRAMSIZE 64K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
|
||||
MEMORY
|
||||
{
|
||||
#ifdef TCCBOOT
|
||||
DRAM : ORIGIN = DRAMORIG + DRAMSIZE - 0x100000, LENGTH = 0x100000
|
||||
#else
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
#endif
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text)
|
||||
*(.text*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
} > DRAM
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
*(.rodata.*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > DRAM
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
}
|
62
firmware/target/arm/tcc780x/boot.lds
Normal file
62
firmware/target/arm/tcc780x/boot.lds
Normal file
|
@ -0,0 +1,62 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/tcc780x/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x20000000
|
||||
#define IRAMORIG 0x00000000
|
||||
#define IRAMSIZE 4K
|
||||
#define FLASHORIG 0x0000000
|
||||
#define FLASHSIZE 1M
|
||||
|
||||
MEMORY
|
||||
{
|
||||
#ifdef TCCBOOT
|
||||
DRAM : ORIGIN = DRAMORIG + DRAMSIZE - 0x100000, LENGTH = 0x100000
|
||||
#else
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
#endif
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.init.text)
|
||||
*(.text)
|
||||
*(.text*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
} > DRAM
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
*(.rodata.*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > DRAM
|
||||
.bss : {
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
}
|
87
firmware/target/arm/tms320dm320/boot.lds
Normal file
87
firmware/target/arm/tms320dm320/boot.lds
Normal file
|
@ -0,0 +1,87 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-littlearm)
|
||||
OUTPUT_ARCH(arm)
|
||||
INPUT(target/arm/tms320dm320/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x00900000
|
||||
#define IRAMORIG 0x00000000
|
||||
#define IRAMSIZE 16K
|
||||
#define FLASHORIG 0x00100000
|
||||
#define FLASHSIZE 8M
|
||||
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = DRAMORIG + 0x1000000;
|
||||
|
||||
.text : {
|
||||
loadaddress = .;
|
||||
_loadaddress = .;
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
. = ALIGN(0x4);
|
||||
} > DRAM
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata) /* problems without this, dunno why */
|
||||
*(.rodata*)
|
||||
*(.rodata.str1.1)
|
||||
*(.rodata.str1.4)
|
||||
. = ALIGN(0x4);
|
||||
|
||||
/* Pseudo-allocate the copies of the data sections */
|
||||
_datacopy = .;
|
||||
} > DRAM
|
||||
|
||||
.data : {
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = . ;
|
||||
} > DRAM
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > DRAM
|
||||
|
||||
.bss :
|
||||
{
|
||||
_edata = .;
|
||||
*(.bss*);
|
||||
*(.ibss);
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
|
||||
.vectors IRAMORIG :
|
||||
{
|
||||
_vectorsstart = .;
|
||||
KEEP(*(.resetvectors));
|
||||
*(.resetvectors);
|
||||
KEEP(*(.vectors));
|
||||
*(.vectors);
|
||||
_vectorsend = .;
|
||||
} AT > DRAM
|
||||
_vectorscopy = LOADADDR(.vectors);
|
||||
}
|
90
firmware/target/coldfire/iaudio/boot.lds
Normal file
90
firmware/target/coldfire/iaudio/boot.lds
Normal file
|
@ -0,0 +1,90 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-m68k)
|
||||
INPUT(target/coldfire/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#if defined(IAUDIO_X5) || defined(IAUDIO_M5)
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x20000
|
||||
#define FLASHORIG 0x00010000
|
||||
#define FLASHSIZE 4M
|
||||
#elif defined(IAUDIO_M3)
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x00010000
|
||||
#define FLASHSIZE 4M
|
||||
#endif
|
||||
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.vectors :
|
||||
{
|
||||
*(.init.text)
|
||||
_datacopy = .;
|
||||
} > FLASH
|
||||
|
||||
.data : AT ( _datacopy )
|
||||
{
|
||||
_datastart = .;
|
||||
KEEP(*(.resetvectors));
|
||||
*(.resetvectors);
|
||||
KEEP(*(.vectors));
|
||||
*(.vectors);
|
||||
. = ALIGN(0x200);
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = .;
|
||||
. = ALIGN(0x10); /* Maintain proper alignment for .text section */
|
||||
} > IRAM
|
||||
|
||||
/* TRICK ALERT! Newer versions of the linker don't allow output sections
|
||||
to overlap even if one of them is empty, so advance the location pointer
|
||||
"by hand" */
|
||||
.text LOADADDR(.data) + SIZEOF(.data) :
|
||||
{
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
. = ALIGN(0x4);
|
||||
} > FLASH
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
. = ALIGN(0x4);
|
||||
_iramcopy = .;
|
||||
} > FLASH
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > IRAM
|
||||
|
||||
.bss DRAMORIG+0x800000:
|
||||
{
|
||||
_edata = .;
|
||||
*(.ibss)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
}
|
89
firmware/target/coldfire/iriver/boot.lds
Normal file
89
firmware/target/coldfire/iriver/boot.lds
Normal file
|
@ -0,0 +1,89 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-m68k)
|
||||
INPUT(target/coldfire/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#ifdef IRIVER_H100_SERIES
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x001f0000
|
||||
#define FLASHSIZE 2M
|
||||
#elif defined(IRIVER_H300_SERIES)
|
||||
#define DRAMORIG 0x31000000
|
||||
#define IRAMORIG 0x10000000
|
||||
#define IRAMSIZE 0x18000
|
||||
#define FLASHORIG 0x003f0000
|
||||
#define FLASHSIZE 4M
|
||||
#endif
|
||||
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.vectors :
|
||||
{
|
||||
_datacopy = .;
|
||||
} > FLASH
|
||||
|
||||
.data : AT ( _datacopy )
|
||||
{
|
||||
_datastart = .;
|
||||
KEEP(*(.resetvectors));
|
||||
*(.resetvectors);
|
||||
KEEP(*(.vectors));
|
||||
*(.vectors);
|
||||
. = ALIGN(0x200);
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = .;
|
||||
. = ALIGN(0x10); /* Maintain proper alignment for .text section */
|
||||
} > IRAM
|
||||
|
||||
/* TRICK ALERT! Newer versions of the linker don't allow output sections
|
||||
to overlap even if one of them is empty, so advance the location pointer
|
||||
"by hand" */
|
||||
.text LOADADDR(.data) + SIZEOF(.data) :
|
||||
{
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
. = ALIGN(0x4);
|
||||
} > FLASH
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
. = ALIGN(0x4);
|
||||
_iramcopy = .;
|
||||
} > FLASH
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > IRAM
|
||||
|
||||
.bss DRAMORIG+0x800000:
|
||||
{
|
||||
_edata = .;
|
||||
*(.ibss)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > DRAM
|
||||
}
|
81
firmware/target/sh/archos/boot.lds
Normal file
81
firmware/target/sh/archos/boot.lds
Normal file
|
@ -0,0 +1,81 @@
|
|||
#include "config.h"
|
||||
|
||||
ENTRY(start)
|
||||
OUTPUT_FORMAT(elf32-sh)
|
||||
INPUT(target/sh/crt0.o)
|
||||
|
||||
#define DRAMSIZE (MEMORYSIZE * 0x100000)
|
||||
|
||||
#define DRAMORIG 0x09000000
|
||||
#define IRAMORIG 0x0f000000
|
||||
#define IRAMSIZE 0x1000
|
||||
#define FLASHORIG 0x02000000 + ROM_START
|
||||
#define FLASHSIZE 256K - ROM_START
|
||||
|
||||
MEMORY
|
||||
{
|
||||
DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
|
||||
IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
|
||||
FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.vectors :
|
||||
{
|
||||
_datacopy = .;
|
||||
} > FLASH
|
||||
|
||||
.data : AT ( _datacopy )
|
||||
{
|
||||
_datastart = .;
|
||||
KEEP(*(.resetvectors));
|
||||
*(.resetvectors);
|
||||
KEEP(*(.vectors));
|
||||
*(.vectors);
|
||||
. = ALIGN(0x200);
|
||||
*(.icode)
|
||||
*(.irodata)
|
||||
*(.idata)
|
||||
*(.data*)
|
||||
. = ALIGN(0x4);
|
||||
_dataend = .;
|
||||
. = ALIGN(0x10); /* Maintain proper alignment for .text section */
|
||||
} > IRAM
|
||||
|
||||
/* TRICK ALERT! Newer versions of the linker don't allow output sections
|
||||
to overlap even if one of them is empty, so advance the location pointer
|
||||
"by hand" */
|
||||
.text LOADADDR(.data) + SIZEOF(.data) :
|
||||
{
|
||||
*(.init.text)
|
||||
*(.text*)
|
||||
. = ALIGN(0x4);
|
||||
} > FLASH
|
||||
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata*)
|
||||
. = ALIGN(0x4);
|
||||
_iramcopy = .;
|
||||
} > FLASH
|
||||
|
||||
.stack :
|
||||
{
|
||||
*(.stack)
|
||||
_stackbegin = .;
|
||||
stackbegin = .;
|
||||
. += 0x2000;
|
||||
_stackend = .;
|
||||
stackend = .;
|
||||
} > IRAM
|
||||
|
||||
.bss :
|
||||
{
|
||||
_edata = .;
|
||||
*(.ibss)
|
||||
*(.bss*)
|
||||
*(COMMON)
|
||||
_end = .;
|
||||
} > IRAM
|
||||
}
|
Loading…
Reference in a new issue