vmlinux.lds_no.S 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. /*
  2. * vmlinux.lds.S -- master linker script for m68knommu arch
  3. *
  4. * (C) Copyright 2002-2006, Greg Ungerer <gerg@snapgear.com>
  5. *
  6. * This linker script is equipped to build either ROM loaded or RAM
  7. * run kernels.
  8. */
  9. #include <asm-generic/vmlinux.lds.h>
  10. #include <asm/page.h>
  11. #include <asm/thread_info.h>
  12. #if defined(CONFIG_RAMKERNEL)
  13. #define RAM_START CONFIG_KERNELBASE
  14. #define RAM_LENGTH (CONFIG_RAMBASE + CONFIG_RAMSIZE - CONFIG_KERNELBASE)
  15. #define TEXT ram
  16. #define DATA ram
  17. #define INIT ram
  18. #define BSSS ram
  19. #endif
  20. #if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
  21. #define RAM_START CONFIG_RAMBASE
  22. #define RAM_LENGTH CONFIG_RAMSIZE
  23. #define ROMVEC_START CONFIG_ROMVEC
  24. #define ROMVEC_LENGTH CONFIG_ROMVECSIZE
  25. #define ROM_START CONFIG_ROMSTART
  26. #define ROM_LENGTH CONFIG_ROMSIZE
  27. #define TEXT rom
  28. #define DATA ram
  29. #define INIT ram
  30. #define BSSS ram
  31. #endif
  32. #ifndef DATA_ADDR
  33. #define DATA_ADDR
  34. #endif
  35. OUTPUT_ARCH(m68k)
  36. ENTRY(_start)
  37. MEMORY {
  38. ram : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
  39. #ifdef ROM_START
  40. romvec : ORIGIN = ROMVEC_START, LENGTH = ROMVEC_LENGTH
  41. rom : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
  42. #endif
  43. }
  44. jiffies = jiffies_64 + 4;
  45. SECTIONS {
  46. #ifdef ROMVEC_START
  47. . = ROMVEC_START ;
  48. .romvec : {
  49. __rom_start = . ;
  50. _romvec = .;
  51. *(.data..initvect)
  52. } > romvec
  53. #endif
  54. .text : {
  55. _text = .;
  56. _stext = . ;
  57. HEAD_TEXT
  58. TEXT_TEXT
  59. SCHED_TEXT
  60. LOCK_TEXT
  61. *(.text..lock)
  62. . = ALIGN(16); /* Exception table */
  63. __start___ex_table = .;
  64. *(__ex_table)
  65. __stop___ex_table = .;
  66. *(.rodata) *(.rodata.*)
  67. *(__vermagic) /* Kernel version magic */
  68. *(__markers_strings)
  69. *(.rodata1)
  70. *(.rodata.str1.1)
  71. /* Kernel symbol table: Normal symbols */
  72. . = ALIGN(4);
  73. __start___ksymtab = .;
  74. *(SORT(___ksymtab+*))
  75. __stop___ksymtab = .;
  76. /* Kernel symbol table: GPL-only symbols */
  77. __start___ksymtab_gpl = .;
  78. *(SORT(___ksymtab_gpl+*))
  79. __stop___ksymtab_gpl = .;
  80. /* Kernel symbol table: Normal unused symbols */
  81. __start___ksymtab_unused = .;
  82. *(SORT(___ksymtab_unused+*))
  83. __stop___ksymtab_unused = .;
  84. /* Kernel symbol table: GPL-only unused symbols */
  85. __start___ksymtab_unused_gpl = .;
  86. *(SORT(___ksymtab_unused_gpl+*))
  87. __stop___ksymtab_unused_gpl = .;
  88. /* Kernel symbol table: GPL-future symbols */
  89. __start___ksymtab_gpl_future = .;
  90. *(SORT(___ksymtab_gpl_future+*))
  91. __stop___ksymtab_gpl_future = .;
  92. /* Kernel symbol table: Normal symbols */
  93. __start___kcrctab = .;
  94. *(SORT(___kcrctab+*))
  95. __stop___kcrctab = .;
  96. /* Kernel symbol table: GPL-only symbols */
  97. __start___kcrctab_gpl = .;
  98. *(SORT(___kcrctab_gpl+*))
  99. __stop___kcrctab_gpl = .;
  100. /* Kernel symbol table: Normal unused symbols */
  101. __start___kcrctab_unused = .;
  102. *(SORT(___kcrctab_unused+*))
  103. __stop___kcrctab_unused = .;
  104. /* Kernel symbol table: GPL-only unused symbols */
  105. __start___kcrctab_unused_gpl = .;
  106. *(SORT(___kcrctab_unused_gpl+*))
  107. __stop___kcrctab_unused_gpl = .;
  108. /* Kernel symbol table: GPL-future symbols */
  109. __start___kcrctab_gpl_future = .;
  110. *(SORT(___kcrctab_gpl_future+*))
  111. __stop___kcrctab_gpl_future = .;
  112. /* Kernel symbol table: strings */
  113. *(__ksymtab_strings)
  114. /* Built-in module parameters */
  115. . = ALIGN(4) ;
  116. __start___param = .;
  117. *(__param)
  118. __stop___param = .;
  119. /* Built-in module versions */
  120. . = ALIGN(4) ;
  121. __start___modver = .;
  122. *(__modver)
  123. __stop___modver = .;
  124. . = ALIGN(4) ;
  125. _etext = . ;
  126. } > TEXT
  127. .data DATA_ADDR : {
  128. . = ALIGN(4);
  129. _sdata = . ;
  130. DATA_DATA
  131. CACHELINE_ALIGNED_DATA(32)
  132. PAGE_ALIGNED_DATA(PAGE_SIZE)
  133. *(.data..shared_aligned)
  134. INIT_TASK_DATA(THREAD_SIZE)
  135. _edata = . ;
  136. } > DATA
  137. .init.text : {
  138. . = ALIGN(PAGE_SIZE);
  139. __init_begin = .;
  140. } > INIT
  141. INIT_TEXT_SECTION(PAGE_SIZE) > INIT
  142. INIT_DATA_SECTION(16) > INIT
  143. .init.data : {
  144. . = ALIGN(PAGE_SIZE);
  145. __init_end = .;
  146. } > INIT
  147. .bss : {
  148. . = ALIGN(4);
  149. _sbss = . ;
  150. *(.bss)
  151. *(COMMON)
  152. . = ALIGN(4) ;
  153. _ebss = . ;
  154. _end = . ;
  155. } > BSSS
  156. DISCARDS
  157. }