vmlinux.lds.S 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/sizes.h>
  3. #include <asm/asm-offsets.h>
  4. #include <asm/thread_info.h>
  5. #define PAGE_SIZE _PAGE_SIZE
  6. /*
  7. * Put .bss..swapper_pg_dir as the first thing in .bss. This will
  8. * ensure that it has .bss alignment (64K).
  9. */
  10. #define BSS_FIRST_SECTIONS *(.bss..swapper_pg_dir)
  11. #include <asm-generic/vmlinux.lds.h>
  12. #include "image-vars.h"
  13. /*
  14. * Max avaliable Page Size is 64K, so we set SectionAlignment
  15. * field of EFI application to 64K.
  16. */
  17. PECOFF_FILE_ALIGN = 0x200;
  18. PECOFF_SEGMENT_ALIGN = 0x10000;
  19. OUTPUT_ARCH(loongarch)
  20. ENTRY(kernel_entry)
  21. PHDRS {
  22. text PT_LOAD FLAGS(7); /* RWX */
  23. note PT_NOTE FLAGS(4); /* R__ */
  24. }
  25. jiffies = jiffies_64;
  26. SECTIONS
  27. {
  28. . = VMLINUX_LOAD_ADDRESS;
  29. _text = .;
  30. HEAD_TEXT_SECTION
  31. . = ALIGN(PECOFF_SEGMENT_ALIGN);
  32. _stext = .;
  33. .text : {
  34. TEXT_TEXT
  35. SCHED_TEXT
  36. CPUIDLE_TEXT
  37. LOCK_TEXT
  38. KPROBES_TEXT
  39. IRQENTRY_TEXT
  40. SOFTIRQENTRY_TEXT
  41. *(.fixup)
  42. *(.gnu.warning)
  43. } :text = 0
  44. . = ALIGN(PECOFF_SEGMENT_ALIGN);
  45. _etext = .;
  46. EXCEPTION_TABLE(16)
  47. .got : ALIGN(16) { *(.got) }
  48. .plt : ALIGN(16) { *(.plt) }
  49. .got.plt : ALIGN(16) { *(.got.plt) }
  50. . = ALIGN(PECOFF_SEGMENT_ALIGN);
  51. __init_begin = .;
  52. __inittext_begin = .;
  53. INIT_TEXT_SECTION(PAGE_SIZE)
  54. .exit.text : {
  55. EXIT_TEXT
  56. }
  57. . = ALIGN(PECOFF_SEGMENT_ALIGN);
  58. __inittext_end = .;
  59. __initdata_begin = .;
  60. INIT_DATA_SECTION(16)
  61. .exit.data : {
  62. EXIT_DATA
  63. }
  64. #ifdef CONFIG_SMP
  65. PERCPU_SECTION(1 << CONFIG_L1_CACHE_SHIFT)
  66. #endif
  67. .rela.dyn : ALIGN(8) { *(.rela.dyn) *(.rela*) }
  68. .init.bss : {
  69. *(.init.bss)
  70. }
  71. . = ALIGN(PECOFF_SEGMENT_ALIGN);
  72. __initdata_end = .;
  73. __init_end = .;
  74. _sdata = .;
  75. RO_DATA(4096)
  76. RW_DATA(1 << CONFIG_L1_CACHE_SHIFT, PAGE_SIZE, THREAD_SIZE)
  77. .sdata : {
  78. *(.sdata)
  79. }
  80. .edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGN); }
  81. _edata = .;
  82. BSS_SECTION(0, SZ_64K, 8)
  83. . = ALIGN(PECOFF_SEGMENT_ALIGN);
  84. _end = .;
  85. STABS_DEBUG
  86. DWARF_DEBUG
  87. ELF_DETAILS
  88. .gptab.sdata : {
  89. *(.gptab.data)
  90. *(.gptab.sdata)
  91. }
  92. .gptab.sbss : {
  93. *(.gptab.bss)
  94. *(.gptab.sbss)
  95. }
  96. DISCARDS
  97. /DISCARD/ : {
  98. *(.gnu.attributes)
  99. *(.options)
  100. *(.eh_frame)
  101. }
  102. }