README.arm64 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. U-boot for arm64
  2. Summary
  3. =======
  4. No hardware platform of arm64 is available now. The u-boot is
  5. simulated on Foundation Model and Fast Model for ARMv8.
  6. Notes
  7. =====
  8. 1. Currenly, u-boot run at the highest exception level processor
  9. supported and jump to EL2 or optionally EL1 before enter OS.
  10. 2. U-boot for arm64 is compiled with AArch64-gcc. AArch64-gcc
  11. use rela relocation format, a tool(tools/relocate-rela) by Scott Wood
  12. is used to encode the initial addend of rela to u-boot.bin. After running,
  13. the u-boot will be relocated to destination again.
  14. 3. Fdt should be placed at a 2-megabyte boundary and within the first 512
  15. megabytes from the start of the kernel image. So, fdt_high should be
  16. defined specially.
  17. Please reference linux/Documentation/arm64/booting.txt for detail.
  18. 4. Spin-table is used to wake up secondary processors. One location
  19. (or per processor location) is defined to hold the kernel entry point
  20. for secondary processors. It must be ensured that the location is
  21. accessible and zero immediately after secondary processor
  22. enter slave_cpu branch execution in start.S. The location address
  23. is encoded in cpu node of DTS. Linux kernel store the entry point
  24. of secondary processors to it and send event to wakeup secondary
  25. processors.
  26. Please reference linux/Documentation/arm64/booting.txt for detail.
  27. 5. Generic board is supported.
  28. 6. CONFIG_ARM64 instead of CONFIG_ARMV8 is used to distinguish aarch64 and
  29. aarch32 specific codes.
  30. 7. CONFIG_SYS_FULL_VA is used to enable 2-level page tables. For cores
  31. supporting 64k pages it allows usage of full 48+ virtual/physical addresses
  32. Enabling this option requires the following ones to be defined:
  33. - CONFIG_SYS_MEM_MAP - an array of 'struct mm_region' describing the
  34. system memory map (start, length, attributes)
  35. - CONFIG_SYS_MEM_MAP_SIZE - number of entries in CONFIG_SYS_MEM_MAP
  36. - CONFIG_SYS_PTL1_ENTRIES - number of 1st level page table entries
  37. - CONFIG_SYS_PTL2_ENTRIES - number of 1nd level page table entries
  38. for the largest CONFIG_SYS_MEM_MAP entry
  39. - CONFIG_COREID_MASK - the mask value used to get the core from the
  40. MPIDR_EL1 register
  41. - CONFIG_SYS_PTL2_BITS - number of bits addressed by the 2nd level
  42. page tables
  43. - CONFIG_SYS_BLOCK_SHIFT - number of bits addressed by a single block
  44. entry from L2 page tables
  45. - CONFIG_SYS_PGTABLE_SIZE - total size of the page table
  46. - CONFIG_SYS_TCR_EL{1,2,3}_IPS_BITS - the IPS field of the TCR_EL{1,2,3}
  47. Contributor
  48. ===========
  49. Tom Rini <trini@ti.com>
  50. Scott Wood <scottwood@freescale.com>
  51. York Sun <yorksun@freescale.com>
  52. Simon Glass <sjg@chromium.org>
  53. Sharma Bhupesh <bhupesh.sharma@freescale.com>
  54. Rob Herring <robherring2@gmail.com>
  55. Sergey Temerkhanov <s.temerkhanov@gmail.com>