boot.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * 1. load vmlinuz
  4. *
  5. * CONFIG_MEMORY_START +-----------------------+
  6. * | vmlinuz |
  7. * +-----------------------+
  8. * 2. decompressed
  9. *
  10. * CONFIG_MEMORY_START +-----------------------+
  11. * | vmlinuz |
  12. * +-----------------------+
  13. * | |
  14. * BOOT_RELOC_ADDR +-----------------------+
  15. * | |
  16. * KERNEL_DECOMPRESS_ADDR +-----------------------+
  17. * | vmlinux |
  18. * +-----------------------+
  19. *
  20. * 3. relocate copy & jump code
  21. *
  22. * CONFIG_MEMORY_START +-----------------------+
  23. * | vmlinuz |
  24. * +-----------------------+
  25. * | |
  26. * BOOT_RELOC_ADDR +-----------------------+
  27. * | boot(copy&jump) |
  28. * KERNEL_DECOMPRESS_ADDR +-----------------------+
  29. * | vmlinux |
  30. * +-----------------------+
  31. *
  32. * 4. relocate decompressed kernel
  33. *
  34. * CONFIG_MEMORY_START +-----------------------+
  35. * | vmlinux |
  36. * +-----------------------+
  37. * | |
  38. * BOOT_RELOC_ADDR +-----------------------+
  39. * | boot(copy&jump) |
  40. * KERNEL_DECOMPRESS_ADDR +-----------------------+
  41. * | |
  42. * +-----------------------+
  43. *
  44. */
  45. #ifdef __ASSEMBLY__
  46. #define __val(x) x
  47. #else
  48. #define __val(x) (x)
  49. #endif
  50. #define DECOMPRESS_OFFSET_BASE __val(0x00900000)
  51. #define BOOT_RELOC_SIZE __val(0x00001000)
  52. #define KERNEL_EXEC_ADDR __val(CONFIG_MEMORY_START)
  53. #define KERNEL_DECOMPRESS_ADDR __val(CONFIG_MEMORY_START + \
  54. DECOMPRESS_OFFSET_BASE + BOOT_RELOC_SIZE)
  55. #define KERNEL_ENTRY __val(CONFIG_MEMORY_START + 0x1000)
  56. #define BOOT_EXEC_ADDR __val(CONFIG_MEMORY_START)
  57. #define BOOT_RELOC_ADDR __val(CONFIG_MEMORY_START + DECOMPRESS_OFFSET_BASE)