vmlinux.lds.S 2.4 KB

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