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 |
73 | |