root/arch/powerpc/boot/ps3-head.S

/* [<][>][^][v][top][bottom][index][help] */
   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

/* [<][>][^][v][top][bottom][index][help] */