link.x 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. SECTIONS {
  2. .bootstrap ORIGIN(RAM) :
  3. {
  4. /* This needs to be aligned to PAGE_SIZE boundaries. */
  5. KEEP(*(.bootstrap.tlb_fill_entry));
  6. KEEP(*(.bootstrap.entry .bootstrap.data));
  7. . = ORIGIN(RAM) + 0x1000;
  8. KEEP(*(.bootstrap.page_table.1));
  9. KEEP(*(.bootstrap.page_table.2));
  10. . = ALIGN(16);
  11. KEEP(*(.bootstrap.stack));
  12. } > RAM
  13. __kernel_start = ORIGIN(RAM);
  14. }
  15. INSERT BEFORE .text;
  16. SECTIONS {
  17. .text.syscall_fns :
  18. {
  19. KEEP(*(.syscall_fns*));
  20. } > REGION_TEXT AT> RAM
  21. }
  22. INSERT AFTER .text;
  23. SECTIONS {
  24. .percpu : ALIGN(16)
  25. {
  26. __spercpu = .;
  27. PERCPU_DATA_START = .;
  28. . = ALIGN(16);
  29. *(.percpu .percpu*);
  30. . = ALIGN(16);
  31. __epercpu = .;
  32. } > REGION_RODATA AT> RAM
  33. PERCPU_LENGTH = ABSOLUTE(__epercpu - __spercpu);
  34. KIMAGE_PAGES = (__kernel_end - _stext + 0x1000 - 1) / 0x1000;
  35. KIMAGE_32K_COUNT = (KIMAGE_PAGES + 8 - 1) / 8;
  36. BSS_LENGTH = ABSOLUTE(__ebss - __sbss);
  37. }
  38. INSERT AFTER .rodata;
  39. SECTIONS {
  40. .rodata.syscalls :
  41. {
  42. . = ALIGN(16);
  43. __raw_syscall_handlers_start = .;
  44. RAW_SYSCALL_HANDLERS = .;
  45. KEEP(*(.raw_syscalls*));
  46. __raw_syscall_handlers_end = .;
  47. RAW_SYSCALL_HANDLERS_SIZE =
  48. ABSOLUTE(__raw_syscall_handlers_end - __raw_syscall_handlers_start);
  49. } > REGION_RODATA AT> RAM
  50. }
  51. INSERT AFTER .rodata;
  52. SECTIONS {
  53. .rodata.fixups :
  54. {
  55. . = ALIGN(16);
  56. FIX_START = .;
  57. KEEP(*(.fix));
  58. FIX_END = .;
  59. } > REGION_RODATA AT> RAM
  60. }
  61. INSERT AFTER .rodata;
  62. SECTIONS {
  63. .vdso ALIGN(0x1000) : ALIGN(0x1000)
  64. {
  65. KEEP(*(.vdso .vdso.*));
  66. . = ALIGN(0x1000);
  67. } > VDSO AT> RAM
  68. VDSO_PADDR = LOADADDR(.vdso);
  69. __kernel_end = __edata;
  70. }
  71. INSERT BEFORE .data.after;