| /* | |
| * 1. load vmlinuz | |
| * | |
| * CONFIG_MEMORY_START +-----------------------+ | |
| * | vmlinuz | | |
| * +-----------------------+ | |
| * 2. decompressed | |
| * | |
| * CONFIG_MEMORY_START +-----------------------+ | |
| * | vmlinuz | | |
| * +-----------------------+ | |
| * | | | |
| * BOOT_RELOC_ADDR +-----------------------+ | |
| * | | | |
| * KERNEL_DECOMPRESS_ADDR +-----------------------+ | |
| * | vmlinux | | |
| * +-----------------------+ | |
| * | |
| * 3. relocate copy & jump code | |
| * | |
| * CONFIG_MEMORY_START +-----------------------+ | |
| * | vmlinuz | | |
| * +-----------------------+ | |
| * | | | |
| * BOOT_RELOC_ADDR +-----------------------+ | |
| * | boot(copy&jump) | | |
| * KERNEL_DECOMPRESS_ADDR +-----------------------+ | |
| * | vmlinux | | |
| * +-----------------------+ | |
| * | |
| * 4. relocate decompressed kernel | |
| * | |
| * CONFIG_MEMORY_START +-----------------------+ | |
| * | vmlinux | | |
| * +-----------------------+ | |
| * | | | |
| * BOOT_RELOC_ADDR +-----------------------+ | |
| * | boot(copy&jump) | | |
| * KERNEL_DECOMPRESS_ADDR +-----------------------+ | |
| * | | | |
| * +-----------------------+ | |
| * | |
| */ | |
| #ifdef __ASSEMBLY__ | |
| #define __val(x) x | |
| #else | |
| #define __val(x) (x) | |
| #endif | |
| #define DECOMPRESS_OFFSET_BASE __val(0x00900000) | |
| #define BOOT_RELOC_SIZE __val(0x00001000) | |
| #define KERNEL_EXEC_ADDR __val(CONFIG_MEMORY_START) | |
| #define KERNEL_DECOMPRESS_ADDR __val(CONFIG_MEMORY_START + \ | |
| DECOMPRESS_OFFSET_BASE + BOOT_RELOC_SIZE) | |
| #define KERNEL_ENTRY __val(CONFIG_MEMORY_START + 0x1000) | |
| #define BOOT_EXEC_ADDR __val(CONFIG_MEMORY_START) | |
| #define BOOT_RELOC_ADDR __val(CONFIG_MEMORY_START + DECOMPRESS_OFFSET_BASE) |