root/arch/alpha/boot/head.S

/* [previous][next][first][last][top][bottom][index][help] */
   1 /*
   2  * arch/alpha/boot/head.S
   3  *
   4  * initial bootloader stuff..
   5  */
   6 
   7 #include <asm/system.h>
   8 
   9 #define halt .long PAL_halt
  10 
  11         .set noreorder
  12         .globl  __start
  13         .ent    __start
  14 __start:
  15         bis     $31,$31,$31
  16         br      1f
  17         /* room for the initial PCB, which comes here */
  18         .quad   0,0,0,0,0,0,0,0
  19 1:      br      $27,2f
  20 2:      ldgp    $29,0($27)
  21         lda     $27,start_kernel
  22         jsr     $26,($27),start_kernel
  23         halt
  24         .end __start
  25 
  26         .align 5
  27         .globl  wrent
  28         .ent    wrent
  29 wrent:
  30         .long PAL_wrent
  31         ret ($26)
  32         .end wrent
  33 
  34         .align 5
  35         .globl  wrkgp
  36         .ent    wrkgp
  37 wrkgp:
  38         .long PAL_wrkgp
  39         ret ($26)
  40         .end wrkgp
  41 
  42         .align 5
  43         .globl  switch_to_osf_pal
  44         .ent    switch_to_osf_pal
  45 switch_to_osf_pal:
  46         subq    $30,128,$30
  47         stq     $26,0($30)
  48         stq     $1,8($30)
  49         stq     $2,16($30)
  50         stq     $3,24($30)
  51         stq     $4,32($30)
  52         stq     $5,40($30)
  53         stq     $6,48($30)
  54         stq     $7,56($30)
  55         stq     $8,64($30)
  56         stq     $9,72($30)
  57         stq     $10,80($30)
  58         stq     $11,88($30)
  59         stq     $12,96($30)
  60         stq     $13,104($30)
  61         stq     $14,112($30)
  62         stq     $15,120($30)
  63 
  64         stq     $30,0($17)      /* save KSP in PCB */
  65 
  66         bis     $30,$30,$20     /* a4 = KSP */
  67         br      $17,__do_swppal
  68 
  69         ldq     $26,0($30)
  70         ldq     $1,8($30)
  71         ldq     $2,16($30)
  72         ldq     $3,24($30)
  73         ldq     $4,32($30)
  74         ldq     $5,40($30)
  75         ldq     $6,48($30)
  76         ldq     $7,56($30)
  77         ldq     $8,64($30)
  78         ldq     $9,72($30)
  79         ldq     $10,80($30)
  80         ldq     $11,88($30)
  81         ldq     $12,96($30)
  82         ldq     $13,104($30)
  83         ldq     $14,112($30)
  84         ldq     $15,120($30)
  85         addq    $30,128,$30
  86         ret ($26)
  87 
  88 __do_swppal:
  89         .long   PAL_swppal
  90         .end    switch_to_osf_pal
  91 
  92 .globl  dispatch
  93 .ent    dispatch
  94 dispatch:
  95         subq    $30,80,$30
  96         stq     $26,0($30)
  97         stq     $29,8($30)
  98 
  99         stq     $8,16($30)
 100         stq     $9,24($30)
 101         stq     $10,32($30)
 102         stq     $11,40($30)
 103         stq     $12,48($30)
 104         stq     $13,56($30)
 105         stq     $14,64($30)
 106         stq     $15,72($30)
 107 
 108         lda     $1,0x10000000           /* hwrpb */
 109         ldq     $2,0xc0($1)             /* crb offset */
 110         addq    $2,$1,$2                /* crb */
 111         ldq     $27,0($2)               /* dispatch procedure value */
 112 
 113         ldq     $2,8($27)               /* dispatch call address */
 114         jsr     $26,($2)                /* call it (weird VMS call seq) */
 115 
 116         ldq     $26,0($30)
 117         ldq     $29,8($30)
 118 
 119         ldq     $8,16($30)
 120         ldq     $9,24($30)
 121         ldq     $10,32($30)
 122         ldq     $11,40($30)
 123         ldq     $12,48($30)
 124         ldq     $13,56($30)
 125         ldq     $14,64($30)
 126         ldq     $15,72($30)
 127 
 128         addq    $30,80,$30
 129         ret     $31,($26)
 130 .end    dispatch
 131 

/* [previous][next][first][last][top][bottom][index][help] */