vmlinux.lds.S 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. _etext = .;
  80. /*
  81. * Start kernel read-write segment.
  82. */
  83. READWRITE_SEGMENT_START
  84. _sdata = .;
  85. .fardata : AT(ADDR(.fardata) - LOAD_OFFSET)
  86. {
  87. INIT_TASK_DATA(THREAD_SIZE)
  88. NOSAVE_DATA
  89. PAGE_ALIGNED_DATA(PAGE_SIZE)
  90. CACHELINE_ALIGNED_DATA(128)
  91. READ_MOSTLY_DATA(128)
  92. DATA_DATA
  93. CONSTRUCTORS
  94. *(.data1)
  95. *(.fardata .fardata.*)
  96. *(.data.debug_bpt)
  97. }
  98. .neardata ALIGN(8) : AT(ADDR(.neardata) - LOAD_OFFSET)
  99. {
  100. *(.neardata2 .neardata2.* .gnu.linkonce.s2.*)
  101. *(.neardata .neardata.* .gnu.linkonce.s.*)
  102. . = ALIGN(8);
  103. }
  104. BUG_TABLE
  105. _edata = .;
  106. __bss_start = .;
  107. SBSS(8)
  108. BSS(8)
  109. .far :
  110. {
  111. . = ALIGN(8);
  112. *(.dynfar)
  113. *(.far .far.* .gnu.linkonce.b.*)
  114. . = ALIGN(8);
  115. }
  116. __bss_stop = .;
  117. _end = .;
  118. DWARF_DEBUG
  119. /DISCARD/ :
  120. {
  121. EXIT_TEXT
  122. EXIT_DATA
  123. EXIT_CALL
  124. *(.discard)
  125. *(.discard.*)
  126. *(.interp)
  127. }
  128. }