]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/powerpc/cpu/ppc4xx/u-boot.lds
karo: fdt: fix panel-dpi support
[karo-tx-uboot.git] / arch / powerpc / cpu / ppc4xx / u-boot.lds
1 /*
2  * Copyright 2007-2009 Freescale Semiconductor, Inc.
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6
7 #include "config.h"     /* CONFIG_BOARDDIR */
8
9 #ifndef RESET_VECTOR_ADDRESS
10 #ifdef CONFIG_RESET_VECTOR_ADDRESS
11 #define RESET_VECTOR_ADDRESS    CONFIG_RESET_VECTOR_ADDRESS
12 #else
13 #define RESET_VECTOR_ADDRESS    0xfffffffc
14 #endif
15 #endif
16
17 OUTPUT_ARCH(powerpc)
18
19 PHDRS
20 {
21   text PT_LOAD;
22   bss PT_LOAD;
23 }
24
25 SECTIONS
26 {
27   /* Read-only sections, merged into text segment: */
28   . = + SIZEOF_HEADERS;
29   .text      :
30   {
31     *(.text*)
32    } :text
33     _etext = .;
34     PROVIDE (etext = .);
35     .rodata    :
36    {
37     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
38   } :text
39
40   /* Read-write section, merged into data segment: */
41   . = (. + 0x00FF) & 0xFFFFFF00;
42   _erotext = .;
43   PROVIDE (erotext = .);
44   .reloc   :
45   {
46     _GOT2_TABLE_ = .;
47     KEEP(*(.got2))
48     KEEP(*(.got))
49     PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
50     _FIXUP_TABLE_ = .;
51     KEEP(*(.fixup))
52   }
53   __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
54   __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
55
56   .data    :
57   {
58     *(.data*)
59     *(.sdata*)
60   }
61   _edata  =  .;
62   PROVIDE (edata = .);
63
64   . = .;
65
66   . = ALIGN(4);
67   .u_boot_list : {
68         KEEP(*(SORT(.u_boot_list*)));
69   }
70
71   . = .;
72   __start___ex_table = .;
73   __ex_table : { *(__ex_table) }
74   __stop___ex_table = .;
75
76   . = ALIGN(256);
77   __init_begin = .;
78   .text.init : { *(.text.init) }
79   .data.init : {
80         *(.data.init)
81         . = ALIGN(256);
82         LONG(0) LONG(0)         /* Extend u-boot.bin to here */
83   }
84   __init_end = .;
85   _end = .;
86
87 #ifndef CONFIG_SPL
88 #ifdef CONFIG_440
89   .bootpg RESET_VECTOR_ADDRESS - 0xffc :
90   {
91     arch/powerpc/cpu/ppc4xx/start.o     (.bootpg)
92
93     /*
94      * PPC440 board need a board specific object with the
95      * TLB definitions. This needs to get included right after
96      * start.o, since the first shadow TLB only covers 4k
97      * of address space.
98      */
99 #ifdef CONFIG_INIT_TLB
100     CONFIG_INIT_TLB (.bootpg)
101 #else
102     CONFIG_BOARDDIR/init.o      (.bootpg)
103 #endif
104   } :text = 0xffff
105 #endif
106
107   .resetvec RESET_VECTOR_ADDRESS :
108   {
109     KEEP(*(.resetvec))
110   } :text = 0xffff
111
112   . = RESET_VECTOR_ADDRESS + 0x4;
113
114   /*
115    * Make sure that the bss segment isn't linked at 0x0, otherwise its
116    * address won't be updated during relocation fixups.  Note that
117    * this is a temporary fix.  Code to dynamically the fixup the bss
118    * location will be added in the future.  When the bss relocation
119    * fixup code is present this workaround should be removed.
120    */
121 #if (RESET_VECTOR_ADDRESS == 0xfffffffc)
122   . |= 0x10;
123 #endif
124 #endif /* CONFIG_SPL */
125
126   __bss_start = .;
127   .bss (NOLOAD)       :
128   {
129    *(.bss*)
130    *(.sbss*)
131    *(COMMON)
132   } :bss
133
134   . = ALIGN(4);
135   __bss_end = . ;
136   PROVIDE (end = .);
137 }