Merge tag 'please-pull-misc-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / arch / arm / boot / compressed / head-shmobile.S
1 /*
2  * The head-file for SH-Mobile ARM platforms
3  *
4  * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
5  * Simon Horman <horms@verge.net.au>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; version 2 of the License.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  */
20
21 #ifdef CONFIG_ZBOOT_ROM
22
23         .section        ".start", "ax"
24
25         /* load board-specific initialization code */
26 #include <mach/zboot.h>
27
28 #if defined(CONFIG_ZBOOT_ROM_MMCIF) || defined(CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI)
29         /* Load image from MMC/SD */
30         adr     sp, __tmp_stack + 256
31         ldr     r0, __image_start
32         ldr     r1, __image_end
33         subs    r1, r1, r0
34         ldr     r0, __load_base
35         bl      mmc_loader
36
37         /* Jump to loaded code */
38         ldr     r0, __loaded
39         ldr     r1, __image_start
40         sub     r0, r0, r1
41         ldr     r1, __load_base
42         add     pc, r0, r1
43
44 __image_start:
45         .long   _start
46 __image_end:
47         .long   _got_end
48 __load_base:
49         .long   MEMORY_START + 0x02000000 @ Load at 32Mb into SDRAM
50 __loaded:
51         .long   __continue
52         .align
53 __tmp_stack:
54         .space  256
55 __continue:
56 #endif /* CONFIG_ZBOOT_ROM_MMC || CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI */
57
58         /* Set board ID necessary for boot */
59         ldr     r7, 1f                          @ Set machine type register
60         mov     r8, #0                          @ pass null pointer as atag
61         b       2f
62
63 1 :     .long MACH_TYPE
64 2 :
65
66 #endif /* CONFIG_ZBOOT_ROM */