summaryrefslogtreecommitdiff
path: root/firmware/target/arm
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm')
-rw-r--r--firmware/target/arm/imx31/boot.lds84
-rw-r--r--firmware/target/arm/ipod/boot.lds69
-rw-r--r--firmware/target/arm/iriver/boot.lds53
-rw-r--r--firmware/target/arm/olympus/boot.lds53
-rw-r--r--firmware/target/arm/s3c2440/boot.lds50
-rw-r--r--firmware/target/arm/sandisk/boot.lds56
-rw-r--r--firmware/target/arm/tcc77x/boot.lds62
-rw-r--r--firmware/target/arm/tcc780x/boot.lds62
-rw-r--r--firmware/target/arm/tms320dm320/boot.lds87
9 files changed, 576 insertions, 0 deletions
diff --git a/firmware/target/arm/imx31/boot.lds b/firmware/target/arm/imx31/boot.lds
new file mode 100644
index 0000000000..84597d5ad1
--- /dev/null
+++ b/firmware/target/arm/imx31/boot.lds
@@ -0,0 +1,84 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/imx31/crt0.o)
7
8#define DRAMSIZE (1 << 20) /* Limit 1 MB for bootloader */
9
10#define DRAMORIG (0x02000000-0x00100000)
11#define IRAM DRAM
12#define IRAMORIG 0x1FFFC000
13#define IRAMSIZE 16K
14#define FLASHORIG 0x0000000
15#define FLASHSIZE 1M
16
17MEMORY
18{
19 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
20}
21
22SECTIONS
23{
24 . = DRAMORIG;
25
26 .text :
27 {
28 *(.init.text)
29 *(.text*)
30 *(.icode)
31 *(.glue_7)
32 *(.glue_7t)
33 . = ALIGN(0x4);
34 } > DRAM
35
36 .rodata :
37 {
38 *(.rodata) /* problems without this, dunno why */
39 *(.rodata*)
40 *(.rodata.str1.1)
41 *(.rodata.str1.4)
42 . = ALIGN(0x4);
43
44 /* Pseudo-allocate the copies of the data sections */
45 _datacopy = .;
46 } > DRAM
47
48 .data :
49 {
50 *(.irodata)
51 *(.idata)
52 *(.data*)
53 . = ALIGN(0x4);
54 _dataend = . ;
55 } > DRAM
56
57 .stack :
58 {
59 *(.stack)
60 _stackbegin = .;
61 stackbegin = .;
62 . += 0x2000;
63 _stackend = .;
64 stackend = .;
65 } > IRAM
66
67 .bss :
68 {
69 _edata = .;
70 *(.bss*);
71 *(.ibss);
72 *(COMMON)
73 _end = .;
74 } > DRAM
75
76 .vectors 0x0 :
77 {
78 _vectorsstart = .;
79 *(.vectors);
80 KEEP(*(.vectors));
81 _vectorsend = .;
82 } AT > DRAM
83 _vectorscopy = LOADADDR(.vectors);
84}
diff --git a/firmware/target/arm/ipod/boot.lds b/firmware/target/arm/ipod/boot.lds
new file mode 100644
index 0000000000..2f2f4f91a1
--- /dev/null
+++ b/firmware/target/arm/ipod/boot.lds
@@ -0,0 +1,69 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/crt0-pp-bl.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#if CONFIG_CPU == PP5020
11#define DRAMORIG 0x10000000
12#define IRAMORIG 0x40000000
13#define IRAMSIZE 0x18000
14#define FLASHORIG 0x001f0000
15#define FLASHSIZE 2M
16#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
17#define DRAMORIG 0x10000000
18#ifndef IRAMORIG
19#define IRAMORIG 0x40000000
20#endif
21#define IRAMSIZE 0x20000
22#define FLASHORIG 0x001f0000
23#define FLASHSIZE 2M
24#elif CONFIG_CPU == PP5002
25#define DRAMORIG 0x28000000
26#define IRAMORIG 0x40000000
27#define IRAMSIZE 0x18000
28#define FLASHORIG 0x001f0000
29#define FLASHSIZE 2M
30#endif
31
32SECTIONS
33{
34 . = IRAMORIG;
35
36 .text : {
37 *(.init.text)
38 *(.text*)
39 }
40
41 .data : {
42 *(.icode)
43 *(.irodata)
44 *(.idata)
45 *(.data*)
46 _dataend = . ;
47 }
48
49 .stack :
50 {
51 *(.stack)
52 _stackbegin = .;
53 stackbegin = .;
54 . += 0x2000;
55 _stackend = .;
56 stackend = .;
57 }
58
59 /* The bss section is too large for IRAM - we just move it 16MB into the
60 DRAM */
61
62 . = (DRAMORIG+16*1024*1024);
63 .bss : {
64 _edata = .;
65 *(.bss*);
66 *(.ibss);
67 _end = .;
68 }
69}
diff --git a/firmware/target/arm/iriver/boot.lds b/firmware/target/arm/iriver/boot.lds
new file mode 100644
index 0000000000..5fbe999333
--- /dev/null
+++ b/firmware/target/arm/iriver/boot.lds
@@ -0,0 +1,53 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/crt0-pp-bl.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x10000000
11#define IRAMORIG 0x40000000
12#define IRAMSIZE 0x18000
13#define FLASHORIG 0x001f0000
14#define FLASHSIZE 2M
15
16SECTIONS
17{
18 . = IRAMORIG;
19
20 .text : {
21 *(.init.text)
22 *(.text*)
23 }
24
25 .data : {
26 *(.icode)
27 *(.irodata)
28 *(.idata)
29 *(.data*)
30 _dataend = . ;
31 }
32
33 .stack :
34 {
35 *(.stack)
36 _stackbegin = .;
37 stackbegin = .;
38 . += 0x2000;
39 _stackend = .;
40 stackend = .;
41 }
42
43 /* The bss section is too large for IRAM - we just move it 16MB into the
44 DRAM */
45
46 . = (DRAMORIG+16*1024*1024);
47 .bss : {
48 _edata = .;
49 *(.bss*);
50 *(.ibss);
51 _end = .;
52 }
53}
diff --git a/firmware/target/arm/olympus/boot.lds b/firmware/target/arm/olympus/boot.lds
new file mode 100644
index 0000000000..5fbe999333
--- /dev/null
+++ b/firmware/target/arm/olympus/boot.lds
@@ -0,0 +1,53 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/crt0-pp-bl.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x10000000
11#define IRAMORIG 0x40000000
12#define IRAMSIZE 0x18000
13#define FLASHORIG 0x001f0000
14#define FLASHSIZE 2M
15
16SECTIONS
17{
18 . = IRAMORIG;
19
20 .text : {
21 *(.init.text)
22 *(.text*)
23 }
24
25 .data : {
26 *(.icode)
27 *(.irodata)
28 *(.idata)
29 *(.data*)
30 _dataend = . ;
31 }
32
33 .stack :
34 {
35 *(.stack)
36 _stackbegin = .;
37 stackbegin = .;
38 . += 0x2000;
39 _stackend = .;
40 stackend = .;
41 }
42
43 /* The bss section is too large for IRAM - we just move it 16MB into the
44 DRAM */
45
46 . = (DRAMORIG+16*1024*1024);
47 .bss : {
48 _edata = .;
49 *(.bss*);
50 *(.ibss);
51 _end = .;
52 }
53}
diff --git a/firmware/target/arm/s3c2440/boot.lds b/firmware/target/arm/s3c2440/boot.lds
new file mode 100644
index 0000000000..cc20fbe86f
--- /dev/null
+++ b/firmware/target/arm/s3c2440/boot.lds
@@ -0,0 +1,50 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/s3c2440/crt0.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x30000000
11#define IRAMORIG 0x40000000
12#define IRAMSIZE 4K
13#define FLASHORIG 0x0000000
14#define FLASHSIZE 1M
15
16SECTIONS
17{
18 . = DRAMORIG + 0x1000000;
19
20 .text : {
21 *(.init.text)
22 *(.text*)
23 }
24
25 .data : {
26 *(.icode)
27 *(.irodata)
28 *(.idata)
29 *(.data*)
30 . = ALIGN(0x4);
31 _dataend = . ;
32 }
33
34 .stack :
35 {
36 *(.stack)
37 _stackbegin = .;
38 stackbegin = .;
39 . += 0x2000;
40 _stackend = .;
41 stackend = .;
42 }
43 .bss : {
44 _edata = .;
45 *(.bss*);
46 *(.ibss);
47 *(COMMON)
48 _end = .;
49 }
50}
diff --git a/firmware/target/arm/sandisk/boot.lds b/firmware/target/arm/sandisk/boot.lds
new file mode 100644
index 0000000000..a087a7250d
--- /dev/null
+++ b/firmware/target/arm/sandisk/boot.lds
@@ -0,0 +1,56 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/crt0-pp-bl.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x10000000
11#ifndef IRAMORIG
12#define IRAMORIG 0x40000000
13#endif
14#define IRAMSIZE 0x20000
15#define FLASHORIG 0x001f0000
16#define FLASHSIZE 2M
17
18
19SECTIONS
20{
21 . = IRAMORIG;
22
23 .text : {
24 *(.init.text)
25 *(.text*)
26 }
27
28 .data : {
29 *(.icode)
30 *(.irodata)
31 *(.idata)
32 *(.data*)
33 _dataend = . ;
34 }
35
36 .stack :
37 {
38 *(.stack)
39 _stackbegin = .;
40 stackbegin = .;
41 . += 0x2000;
42 _stackend = .;
43 stackend = .;
44 }
45
46 /* The bss section is too large for IRAM - we just move it 16MB into the
47 DRAM */
48
49 . = (DRAMORIG+16*1024*1024);
50 .bss : {
51 _edata = .;
52 *(.bss*);
53 *(.ibss);
54 _end = .;
55 }
56}
diff --git a/firmware/target/arm/tcc77x/boot.lds b/firmware/target/arm/tcc77x/boot.lds
new file mode 100644
index 0000000000..aa4b05c5ae
--- /dev/null
+++ b/firmware/target/arm/tcc77x/boot.lds
@@ -0,0 +1,62 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/tcc77x/crt0.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x20000000
11#define IRAMORIG 0x00000000
12#define IRAMSIZE 64K
13#define FLASHORIG 0x0000000
14#define FLASHSIZE 1M
15
16MEMORY
17{
18#ifdef TCCBOOT
19 DRAM : ORIGIN = DRAMORIG + DRAMSIZE - 0x100000, LENGTH = 0x100000
20#else
21 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
22#endif
23 IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
24}
25
26SECTIONS
27{
28 .text : {
29 *(.init.text)
30 *(.text)
31 *(.text*)
32 *(.glue_7)
33 *(.glue_7t)
34 } > DRAM
35
36 .data : {
37 *(.icode)
38 *(.irodata)
39 *(.idata)
40 *(.data*)
41 *(.rodata.*)
42 . = ALIGN(0x4);
43 _dataend = . ;
44 } > DRAM
45
46 .stack :
47 {
48 *(.stack)
49 _stackbegin = .;
50 stackbegin = .;
51 . += 0x2000;
52 _stackend = .;
53 stackend = .;
54 } > DRAM
55 .bss : {
56 _edata = .;
57 *(.bss*);
58 *(.ibss);
59 *(COMMON)
60 _end = .;
61 } > DRAM
62}
diff --git a/firmware/target/arm/tcc780x/boot.lds b/firmware/target/arm/tcc780x/boot.lds
new file mode 100644
index 0000000000..657f31901a
--- /dev/null
+++ b/firmware/target/arm/tcc780x/boot.lds
@@ -0,0 +1,62 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/tcc780x/crt0.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x20000000
11#define IRAMORIG 0x00000000
12#define IRAMSIZE 4K
13#define FLASHORIG 0x0000000
14#define FLASHSIZE 1M
15
16MEMORY
17{
18#ifdef TCCBOOT
19 DRAM : ORIGIN = DRAMORIG + DRAMSIZE - 0x100000, LENGTH = 0x100000
20#else
21 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
22#endif
23 IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
24}
25
26SECTIONS
27{
28 .text : {
29 *(.init.text)
30 *(.text)
31 *(.text*)
32 *(.glue_7)
33 *(.glue_7t)
34 } > DRAM
35
36 .data : {
37 *(.icode)
38 *(.irodata)
39 *(.idata)
40 *(.data*)
41 *(.rodata.*)
42 . = ALIGN(0x4);
43 _dataend = . ;
44 } > DRAM
45
46 .stack :
47 {
48 *(.stack)
49 _stackbegin = .;
50 stackbegin = .;
51 . += 0x2000;
52 _stackend = .;
53 stackend = .;
54 } > DRAM
55 .bss : {
56 _edata = .;
57 *(.bss*);
58 *(.ibss);
59 *(COMMON)
60 _end = .;
61 } > DRAM
62}
diff --git a/firmware/target/arm/tms320dm320/boot.lds b/firmware/target/arm/tms320dm320/boot.lds
new file mode 100644
index 0000000000..8fb40ae135
--- /dev/null
+++ b/firmware/target/arm/tms320dm320/boot.lds
@@ -0,0 +1,87 @@
1#include "config.h"
2
3ENTRY(start)
4OUTPUT_FORMAT(elf32-littlearm)
5OUTPUT_ARCH(arm)
6INPUT(target/arm/tms320dm320/crt0.o)
7
8#define DRAMSIZE (MEMORYSIZE * 0x100000)
9
10#define DRAMORIG 0x00900000
11#define IRAMORIG 0x00000000
12#define IRAMSIZE 16K
13#define FLASHORIG 0x00100000
14#define FLASHSIZE 8M
15
16MEMORY
17{
18 DRAM : ORIGIN = DRAMORIG, LENGTH = DRAMSIZE
19 IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
20 FLASH : ORIGIN = FLASHORIG, LENGTH = FLASHSIZE
21}
22
23SECTIONS
24{
25 . = DRAMORIG + 0x1000000;
26
27 .text : {
28 loadaddress = .;
29 _loadaddress = .;
30 *(.init.text)
31 *(.text*)
32 *(.glue_7)
33 *(.glue_7t)
34 . = ALIGN(0x4);
35 } > DRAM
36
37 .rodata :
38 {
39 *(.rodata) /* problems without this, dunno why */
40 *(.rodata*)
41 *(.rodata.str1.1)
42 *(.rodata.str1.4)
43 . = ALIGN(0x4);
44
45 /* Pseudo-allocate the copies of the data sections */
46 _datacopy = .;
47 } > DRAM
48
49 .data : {
50 *(.icode)
51 *(.irodata)
52 *(.idata)
53 *(.data*)
54 . = ALIGN(0x4);
55 _dataend = . ;
56 } > DRAM
57
58 .stack :
59 {
60 *(.stack)
61 _stackbegin = .;
62 stackbegin = .;
63 . += 0x2000;
64 _stackend = .;
65 stackend = .;
66 } > DRAM
67
68 .bss :
69 {
70 _edata = .;
71 *(.bss*);
72 *(.ibss);
73 *(COMMON)
74 _end = .;
75 } > DRAM
76
77 .vectors IRAMORIG :
78 {
79 _vectorsstart = .;
80 KEEP(*(.resetvectors));
81 *(.resetvectors);
82 KEEP(*(.vectors));
83 *(.vectors);
84 _vectorsend = .;
85 } AT > DRAM
86 _vectorscopy = LOADADDR(.vectors);
87}