WIP FPC-III support
[linux/fpc-iii.git] / arch / powerpc / boot / ps3-head.S
blob0a4ebfcc39491c828bd98da32e12f2d88c20cf46
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  */
9 #include "ppc_asm.h"
11         .machine "ppc64"
13         .text
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  */
25         .globl __system_reset_overlay
26 __system_reset_overlay:
28         /* Switch to 32-bit mode. */
30         mfmsr   r9
31         clrldi  r9,r9,1
32         mtmsrd  r9
33         nop
35         /* Get thread number in r3 and branch. */
37         mfspr   r3, 0x88
38         cntlzw. r3, r3
39         beq     1f
41         /* Secondary goes to __secondary_hold in kernel. */
43         li      r4, 0x60
44         mtctr   r4
45         bctr
48         /* Primary delays then goes to _zimage_start in wrapper. */
50         or      31, 31, 31 /* db16cyc */
51         or      31, 31, 31 /* db16cyc */
53         lis     r4, _zimage_start@ha
54         addi    r4, r4, _zimage_start@l
55         mtctr   r4
56         bctr
58         . = __system_reset_overlay + 512
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  */
69         .globl __system_reset_kernel
70 __system_reset_kernel:
72         . = __system_reset_kernel + 512