]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - arch/powerpc/boot/crt0.S
powerpc: Fix problem with time going backwards
[mirror_ubuntu-artful-kernel.git] / arch / powerpc / boot / crt0.S
CommitLineData
1da177e4
LT
1/*
2 * Copyright (C) Paul Mackerras 1997.
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 *
9 * NOTE: this code runs in 32 bit mode and is packaged as ELF32.
10 */
11
decd300b 12#include "ppc_asm.h"
1da177e4
LT
13
14 .text
66a45dd3
PM
15 /* a procedure descriptor used when booting this as a COFF file */
16_zimage_start_opd:
17 .long _zimage_start, 0, 0, 0
18
67a1b682
OH
19 .globl _zimage_start
20_zimage_start:
66a45dd3
PM
21 /* Work out the offset between the address we were linked at
22 and the address where we're running. */
68643cfb 23 bl 1f
66a45dd3 241: mflr r0
68643cfb
OH
25 lis r9,1b@ha
26 addi r9,r9,1b@l
a4497235 27 subf. r0,r9,r0
66a45dd3 28 beq 3f /* if running at same address as linked */
a4497235 29
66a45dd3
PM
30 /* The .got2 section contains a list of addresses, so add
31 the address offset onto each entry. */
a4497235
OH
32 lis r9,__got2_start@ha
33 addi r9,r9,__got2_start@l
34 lis r8,__got2_end@ha
35 addi r8,r8,__got2_end@l
36 subf. r8,r9,r8
68643cfb 37 beq 3f
a4497235
OH
38 srwi. r8,r8,2
39 mtctr r8
40 add r9,r0,r9
66a45dd3 412: lwz r8,0(r9)
a4497235
OH
42 add r8,r8,r0
43 stw r8,0(r9)
44 addi r9,r9,4
68643cfb 45 bdnz 2b
a4497235 46
66a45dd3
PM
47 /* Do a cache flush for our text, in case OF didn't */
483: lis r9,_start@h
a4497235 49 add r9,r0,r9
1da177e4
LT
50 lis r8,_etext@ha
51 addi r8,r8,_etext@l
a4497235 52 add r8,r0,r8
68643cfb 534: dcbf r0,r9
1da177e4
LT
54 icbi r0,r9
55 addi r9,r9,0x20
56 cmplwi 0,r9,8
68643cfb 57 blt 4b
1da177e4
LT
58 sync
59 isync
60
7e658118 61 mr r6,r1
1da177e4
LT
62 b start
63