root/arch/alpha/boot/head.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * arch/alpha/boot/head.S
   4  *
   5  * initial bootloader stuff..
   6  */
   7 
   8 #include <asm/pal.h>
   9 
  10         .set noreorder
  11         .globl  __start
  12         .ent    __start
  13 __start:
  14         br      $29,2f
  15 2:      ldgp    $29,0($29)
  16         jsr     $26,start_kernel
  17         call_pal PAL_halt
  18         .end __start
  19 
  20         .align 5
  21         .globl  wrent
  22         .ent    wrent
  23 wrent:
  24         .prologue 0
  25         call_pal PAL_wrent
  26         ret ($26)
  27         .end wrent
  28 
  29         .align 5
  30         .globl  wrkgp
  31         .ent    wrkgp
  32 wrkgp:
  33         .prologue 0
  34         call_pal PAL_wrkgp
  35         ret ($26)
  36         .end wrkgp
  37 
  38         .align 5
  39         .globl  switch_to_osf_pal
  40         .ent    switch_to_osf_pal
  41 switch_to_osf_pal:
  42         subq    $30,128,$30
  43         .frame  $30,128,$26
  44         stq     $26,0($30)
  45         stq     $1,8($30)
  46         stq     $2,16($30)
  47         stq     $3,24($30)
  48         stq     $4,32($30)
  49         stq     $5,40($30)
  50         stq     $6,48($30)
  51         stq     $7,56($30)
  52         stq     $8,64($30)
  53         stq     $9,72($30)
  54         stq     $10,80($30)
  55         stq     $11,88($30)
  56         stq     $12,96($30)
  57         stq     $13,104($30)
  58         stq     $14,112($30)
  59         stq     $15,120($30)
  60         .prologue 0
  61 
  62         stq     $30,0($17)      /* save KSP in PCB */
  63 
  64         bis     $30,$30,$20     /* a4 = KSP */
  65         br      $17,1f
  66 
  67         ldq     $26,0($30)
  68         ldq     $1,8($30)
  69         ldq     $2,16($30)
  70         ldq     $3,24($30)
  71         ldq     $4,32($30)
  72         ldq     $5,40($30)
  73         ldq     $6,48($30)
  74         ldq     $7,56($30)
  75         ldq     $8,64($30)
  76         ldq     $9,72($30)
  77         ldq     $10,80($30)
  78         ldq     $11,88($30)
  79         ldq     $12,96($30)
  80         ldq     $13,104($30)
  81         ldq     $14,112($30)
  82         ldq     $15,120($30)
  83         addq    $30,128,$30
  84         ret ($26)
  85 1:      call_pal PAL_swppal
  86         .end    switch_to_osf_pal
  87 
  88         .align 3
  89         .globl  tbi
  90         .ent    tbi
  91 tbi:
  92         .prologue 0
  93         call_pal PAL_tbi
  94         ret     ($26)
  95         .end tbi
  96 
  97         .align 3
  98         .globl  halt
  99         .ent    halt
 100 halt:
 101         .prologue 0
 102         call_pal PAL_halt
 103         .end halt
 104 
 105 /* $16 - new stack page */
 106         .align 3
 107         .globl  move_stack
 108         .ent    move_stack
 109 move_stack:
 110         .prologue 0
 111         lda     $0, 0x1fff($31)
 112         and     $0, $30, $1                     /* Stack offset */
 113         or      $1, $16, $16                    /* New stack pointer */
 114         mov     $30, $1
 115         mov     $16, $2
 116 1:      ldq     $3, 0($1)                       /* Move the stack */
 117         addq    $1, 8, $1
 118         stq     $3, 0($2)
 119         and     $0, $1, $4
 120         addq    $2, 8, $2
 121         bne     $4, 1b
 122         mov     $16, $30
 123         ret     ($26)
 124         .end move_stack

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