Merge remote-tracking branch 'omap_dss2/for-next'
[deliverable/linux.git] / arch / s390 / boot / compressed / head.S
CommitLineData
1844c9bc
MS
1/*
2 * Startup glue code to uncompress the kernel
3 *
4 * Copyright IBM Corp. 2010
5 *
6 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
7 */
8
9#include <linux/init.h>
144d634a 10#include <linux/linkage.h>
1844c9bc
MS
11#include <asm/asm-offsets.h>
12#include <asm/thread_info.h>
13#include <asm/page.h>
14#include "sizes.h"
15
16__HEAD
144d634a 17ENTRY(startup_continue)
1844c9bc
MS
18 basr %r13,0 # get base
19.LPG1:
20 # setup stack
21 lg %r15,.Lstack-.LPG1(%r13)
22 aghi %r15,-160
23 brasl %r14,decompress_kernel
bf47dc57
SS
24 # Set up registers for memory mover. We move the decompressed image to
25 # 0x11000, starting at offset 0x11000 in the decompressed image so
26 # that code living at 0x11000 in the image will end up at 0x11000 in
27 # memory.
1844c9bc
MS
28 lgr %r4,%r2
29 lg %r2,.Loffset-.LPG1(%r13)
30 la %r4,0(%r2,%r4)
31 lg %r3,.Lmvsize-.LPG1(%r13)
32 lgr %r5,%r3
bf47dc57 33 # Move the memory mover someplace safe so it doesn't overwrite itself.
1844c9bc
MS
34 la %r1,0x200
35 mvc 0(mover_end-mover,%r1),mover-.LPG1(%r13)
bf47dc57
SS
36 # When the memory mover is done we pass control to
37 # arch/s390/kernel/head64.S:startup_continue which lives at 0x11000 in
38 # the decompressed image.
1844c9bc
MS
39 lgr %r6,%r2
40 br %r1
41mover:
42 mvcle %r2,%r4,0
43 jo mover
44 br %r6
45mover_end:
46
47 .align 8
48.Lstack:
49 .quad 0x8000 + (1<<(PAGE_SHIFT+THREAD_ORDER))
50.Loffset:
51 .quad 0x11000
52.Lmvsize:
53 .quad SZ__bss_start
This page took 0.380892 seconds and 5 git commands to generate.