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