link_descriptor_pgtbl.ld 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. OUTPUT_ARCH(arm)
  2. ENTRY(_start)
  3. romBase = 0x00201000;
  4. bss1Base = 0x00102180;
  5. bss2Base = 0x00267000;
  6. stackBase = 0x00200000;
  7. pgtblBase = 0x0027C000;
  8. /* log_sram_buf + bss1 should be less than 40 KB.*/
  9. MEMORY {
  10. bss1 : ORIGIN = 0x00102180, LENGTH = 0xA000
  11. rom : ORIGIN = 0x00201000, LENGTH = 0x3A000
  12. bss2 : ORIGIN = 0x00267000, LENGTH = 0x14000
  13. stack : ORIGIN = 0x00200000, LENGTH = 0xC00
  14. pgtbl : ORIGIN = 0x0027C000, LENGTH = 0x4000
  15. }
  16. SECTIONS {
  17. /* rom region */
  18. . = romBase;
  19. .start ALIGN(4) : {
  20. *(.text.start)
  21. }
  22. . = romBase + 0x01FC;
  23. .rom_info ALIGN(4) : {
  24. *(.data.rom_info)
  25. }
  26. .text ALIGN(4) : {
  27. *(.text)
  28. *(.text.*)
  29. }
  30. .rodata ALIGN(4) : {
  31. *(.rodata)
  32. *(.rodata.*)
  33. }
  34. .data ALIGN(4) : {
  35. *(.data)
  36. *(.data.*)
  37. }
  38. .got ALIGN(4) : {
  39. *(.got)
  40. *(.got.*)
  41. }
  42. __boot_end = .;
  43. /* stack region */
  44. . = stackBase;
  45. .stack ALIGN(4) : {
  46. _stack_start = .;
  47. *(.stack)
  48. _stack_end = .;
  49. }
  50. /* bss2 region */
  51. . = bss2Base;
  52. .bss2 ALIGN(16) : {
  53. _bss2_start = .;
  54. *(.bss)
  55. *(.bss.*)
  56. *(COMMON)
  57. /* make _bss2_end as 4 bytes alignment */
  58. . = ALIGN(4);
  59. _bss2_end = .;
  60. }
  61. /* bss1 region */
  62. . = bss1Base;
  63. .bss1 ALIGN(16) : {
  64. _bss1_start = .;
  65. *print.o (.log_sram_buf)
  66. *efi.o (.gpt_sram_buf)
  67. *efi.o (.gpt_sram_crc32_table)
  68. *efi.o (.gpt_sram_part_info)
  69. *efi.o (.gpt_sram_part_meta_info)
  70. *dramc_debug.o (.gEyeScan_Min)
  71. *dramc_debug.o (.gEyeScan_Max)
  72. *dramc_debug.o (.gEyeScan_WinSize)
  73. /* make _bss1_end as 4 bytes alignment */
  74. . = ALIGN(4);
  75. _bss1_end = .;
  76. }
  77. /* pgtbl region */
  78. . = pgtblBase;
  79. .pgtbl ALIGN(128) : {
  80. _pgtbl_start = .;
  81. /* reserve 16KB for the 1st level page table */
  82. . = . + 16 * 1024;
  83. *mmu.o (.coarse_page_tbl)
  84. /* make _pgtable_end as 4 bytes alignment */
  85. . = ALIGN(128);
  86. _pgtbl_end = .;
  87. }
  88. }