vmlinux.lds.S 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /*
  2. * File: arch/blackfin/kernel/vmlinux.lds.S
  3. * Based on: none - original work
  4. * Author:
  5. *
  6. * Created: Tue Sep 21 2004
  7. * Description: Master linker script for blackfin architecture
  8. *
  9. * Modified:
  10. * Copyright 2004-2007 Analog Devices Inc.
  11. *
  12. * Bugs: Enter bugs at http://blackfin.uclinux.org/
  13. *
  14. * This program is free software; you can redistribute it and/or modify
  15. * it under the terms of the GNU General Public License as published by
  16. * the Free Software Foundation; either version 2 of the License, or
  17. * (at your option) any later version.
  18. *
  19. * This program is distributed in the hope that it will be useful,
  20. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  22. * GNU General Public License for more details.
  23. *
  24. * You should have received a copy of the GNU General Public License
  25. * along with this program; if not, see the file COPYING, or write
  26. * to the Free Software Foundation, Inc.,
  27. * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  28. */
  29. #define VMLINUX_SYMBOL(_sym_) _##_sym_
  30. #include <asm-generic/vmlinux.lds.h>
  31. #include <asm/mem_map.h>
  32. #include <asm/page.h>
  33. OUTPUT_FORMAT("elf32-bfin")
  34. ENTRY(__start)
  35. _jiffies = _jiffies_64;
  36. SECTIONS
  37. {
  38. . = CONFIG_BOOT_LOAD;
  39. .text :
  40. {
  41. __text = .;
  42. _text = .;
  43. __stext = .;
  44. TEXT_TEXT
  45. SCHED_TEXT
  46. LOCK_TEXT
  47. *(.text.lock)
  48. *(.fixup)
  49. . = ALIGN(16);
  50. ___start___ex_table = .;
  51. *(__ex_table)
  52. ___stop___ex_table = .;
  53. . = ALIGN(4);
  54. __etext = .;
  55. }
  56. RODATA
  57. .data :
  58. {
  59. . = ALIGN(PAGE_SIZE);
  60. __sdata = .;
  61. *(.data.init_task)
  62. DATA_DATA
  63. CONSTRUCTORS
  64. . = ALIGN(32);
  65. *(.data.cacheline_aligned)
  66. . = ALIGN(PAGE_SIZE);
  67. __edata = .;
  68. }
  69. . = ALIGN(PAGE_SIZE);
  70. ___init_begin = .;
  71. .init :
  72. {
  73. __sinittext = .;
  74. *(.init.text)
  75. __einittext = .;
  76. *(.init.data)
  77. . = ALIGN(16);
  78. ___setup_start = .;
  79. *(.init.setup)
  80. ___setup_end = .;
  81. ___start___param = .;
  82. *(__param)
  83. ___stop___param = .;
  84. ___initcall_start = .;
  85. INITCALLS
  86. ___initcall_end = .;
  87. ___con_initcall_start = .;
  88. *(.con_initcall.init)
  89. ___con_initcall_end = .;
  90. ___security_initcall_start = .;
  91. *(.security_initcall.init)
  92. ___security_initcall_end = .;
  93. . = ALIGN(4);
  94. ___initramfs_start = .;
  95. *(.init.ramfs)
  96. ___initramfs_end = .;
  97. . = ALIGN(4);
  98. }
  99. __l1_lma_start = .;
  100. .text_l1 L1_CODE_START : AT(LOADADDR(.init) + SIZEOF(.init))
  101. {
  102. . = ALIGN(4);
  103. __stext_l1 = .;
  104. *(.l1.text)
  105. . = ALIGN(4);
  106. __etext_l1 = .;
  107. }
  108. .data_l1 L1_DATA_A_START : AT(LOADADDR(.text_l1) + SIZEOF(.text_l1))
  109. {
  110. . = ALIGN(4);
  111. __sdata_l1 = .;
  112. *(.l1.data)
  113. __edata_l1 = .;
  114. . = ALIGN(4);
  115. __sbss_l1 = .;
  116. *(.l1.bss)
  117. . = ALIGN(32);
  118. *(.data_l1.cacheline_aligned)
  119. . = ALIGN(4);
  120. __ebss_l1 = .;
  121. }
  122. .data_b_l1 L1_DATA_B_START : AT(LOADADDR(.data_l1) + SIZEOF(.data_l1))
  123. {
  124. . = ALIGN(4);
  125. __sdata_b_l1 = .;
  126. *(.l1.data.B)
  127. __edata_b_l1 = .;
  128. . = ALIGN(4);
  129. __sbss_b_l1 = .;
  130. *(.l1.bss.B)
  131. . = ALIGN(4);
  132. __ebss_b_l1 = .;
  133. }
  134. . = LOADADDR(.data_b_l1) + SIZEOF(.data_b_l1);
  135. ___init_end = ALIGN(PAGE_SIZE);
  136. .bss ___init_end :
  137. {
  138. . = ALIGN(4);
  139. ___bss_start = .;
  140. *(.bss)
  141. *(COMMON)
  142. . = ALIGN(4);
  143. ___bss_stop = .;
  144. __end = .;
  145. }
  146. /DISCARD/ :
  147. {
  148. *(.exit.text)
  149. *(.exit.data)
  150. *(.exitcall.exit)
  151. }
  152. }