vmlinux.lds.S 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * ld script for the c6x kernel
  4. *
  5. * Copyright (C) 2010, 2011 Texas Instruments Incorporated
  6. * Mark Salter <msalter@redhat.com>
  7. */
  8. #include <asm-generic/vmlinux.lds.h>
  9. #include <asm/thread_info.h>
  10. #include <asm/page.h>
  11. ENTRY(_c_int00)
  12. #if defined(CONFIG_CPU_BIG_ENDIAN)
  13. jiffies = jiffies_64 + 4;
  14. #else
  15. jiffies = jiffies_64;
  16. #endif
  17. #define READONLY_SEGMENT_START \
  18. . = PAGE_OFFSET;
  19. #define READWRITE_SEGMENT_START \
  20. . = ALIGN(128); \
  21. _data_lma = .;
  22. SECTIONS
  23. {
  24. /*
  25. * Start kernel read only segment
  26. */
  27. READONLY_SEGMENT_START
  28. .vectors :
  29. {
  30. _vectors_start = .;
  31. *(.vectors)
  32. . = ALIGN(0x400);
  33. _vectors_end = .;
  34. }
  35. /*
  36. * This section contains data which may be shared with other
  37. * cores. It needs to be a fixed offset from PAGE_OFFSET
  38. * regardless of kernel configuration.
  39. */
  40. .virtio_ipc_dev :
  41. {
  42. *(.virtio_ipc_dev)
  43. }
  44. . = ALIGN(PAGE_SIZE);
  45. __init_begin = .;
  46. .init :
  47. {
  48. _sinittext = .;
  49. HEAD_TEXT
  50. INIT_TEXT
  51. _einittext = .;
  52. }
  53. INIT_DATA_SECTION(16)
  54. PERCPU_SECTION(128)
  55. . = ALIGN(PAGE_SIZE);
  56. __init_end = .;
  57. .text :
  58. {
  59. _text = .;
  60. _stext = .;
  61. TEXT_TEXT
  62. SCHED_TEXT
  63. CPUIDLE_TEXT
  64. LOCK_TEXT
  65. IRQENTRY_TEXT
  66. SOFTIRQENTRY_TEXT
  67. KPROBES_TEXT
  68. *(.fixup)
  69. *(.gnu.warning)
  70. }
  71. EXCEPTION_TABLE(16)
  72. NOTES
  73. RO_DATA_SECTION(PAGE_SIZE)
  74. .const :
  75. {
  76. *(.const .const.* .gnu.linkonce.r.*)
  77. *(.switch)
  78. }
  79. . = ALIGN (8) ;
  80. __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET)
  81. {
  82. _fdt_start = . ; /* place for fdt blob */
  83. *(__fdt_blob) ; /* Any link-placed DTB */
  84. BYTE(0); /* section always has contents */
  85. . = _fdt_start + 0x4000; /* Pad up to 16kbyte */
  86. _fdt_end = . ;
  87. }
  88. _etext = .;
  89. /*
  90. * Start kernel read-write segment.
  91. */
  92. READWRITE_SEGMENT_START
  93. _sdata = .;
  94. .fardata : AT(ADDR(.fardata) - LOAD_OFFSET)
  95. {
  96. INIT_TASK_DATA(THREAD_SIZE)
  97. NOSAVE_DATA
  98. PAGE_ALIGNED_DATA(PAGE_SIZE)
  99. CACHELINE_ALIGNED_DATA(128)
  100. READ_MOSTLY_DATA(128)
  101. DATA_DATA
  102. CONSTRUCTORS
  103. *(.data1)
  104. *(.fardata .fardata.*)
  105. *(.data.debug_bpt)
  106. }
  107. .neardata ALIGN(8) : AT(ADDR(.neardata) - LOAD_OFFSET)
  108. {
  109. *(.neardata2 .neardata2.* .gnu.linkonce.s2.*)
  110. *(.neardata .neardata.* .gnu.linkonce.s.*)
  111. . = ALIGN(8);
  112. }
  113. BUG_TABLE
  114. _edata = .;
  115. __bss_start = .;
  116. SBSS(8)
  117. BSS(8)
  118. .far :
  119. {
  120. . = ALIGN(8);
  121. *(.dynfar)
  122. *(.far .far.* .gnu.linkonce.b.*)
  123. . = ALIGN(8);
  124. }
  125. __bss_stop = .;
  126. _end = .;
  127. DWARF_DEBUG
  128. /DISCARD/ :
  129. {
  130. EXIT_TEXT
  131. EXIT_DATA
  132. EXIT_CALL
  133. *(.discard)
  134. *(.discard.*)
  135. *(.interp)
  136. }
  137. }