Merge tag 'drm-misc-fixes-2019-06-05' of git://anongit.freedesktop.org/drm/drm-misc...
[sfrench/cifs-2.6.git] / arch / powerpc / boot / ps3-head.S
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  *  PS3 bootwrapper entry.
4  *
5  *  Copyright (C) 2007 Sony Computer Entertainment Inc.
6  *  Copyright 2007 Sony Corp.
7  */
8
9 #include "ppc_asm.h"
10
11         .machine "ppc64"
12
13         .text
14
15 /*
16  * __system_reset_overlay - The PS3 first stage entry.
17  *
18  * The bootwraper build script copies the 512 bytes at symbol
19  * __system_reset_overlay to offset 0x100 of the rom image.  This symbol
20  * must occupy 512 or less bytes.
21  *
22  * The PS3 has a single processor with two threads.
23  */
24
25         .globl __system_reset_overlay
26 __system_reset_overlay:
27
28         /* Switch to 32-bit mode. */
29
30         mfmsr   r9
31         clrldi  r9,r9,1
32         mtmsrd  r9
33         nop
34
35         /* Get thread number in r3 and branch. */
36
37         mfspr   r3, 0x88
38         cntlzw. r3, r3
39         beq     1f
40
41         /* Secondary goes to __secondary_hold in kernel. */
42
43         li      r4, 0x60
44         mtctr   r4
45         bctr
46
47 1:
48         /* Primary delays then goes to _zimage_start in wrapper. */
49
50         or      31, 31, 31 /* db16cyc */
51         or      31, 31, 31 /* db16cyc */
52
53         lis     r4, _zimage_start@ha
54         addi    r4, r4, _zimage_start@l
55         mtctr   r4
56         bctr
57
58         . = __system_reset_overlay + 512
59
60 /*
61  * __system_reset_kernel - Place holder for the kernel reset vector.
62  *
63  * The bootwrapper build script copies 512 bytes from offset 0x100
64  * of the rom image to the symbol __system_reset_kernel.  At runtime
65  * the bootwrapper program copies the 512 bytes at __system_reset_kernel
66  * to ram address 0x100.  This symbol must occupy 512 bytes.
67  */
68
69         .globl __system_reset_kernel
70 __system_reset_kernel:
71
72         . = __system_reset_kernel + 512