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 152: 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 23wrent: 24 .prologue 0 25 call_pal PAL_wrent 26 ret ($26) 27 .end wrent 28 29 .align 5 30 .globl wrkgp 31 .ent wrkgp 32wrkgp: 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 41switch_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) 851: call_pal PAL_swppal 86 .end switch_to_osf_pal 87 88 .align 3 89 .globl tbi 90 .ent tbi 91tbi: 92 .prologue 0 93 call_pal PAL_tbi 94 ret ($26) 95 .end tbi 96 97 .align 3 98 .globl halt 99 .ent halt 100halt: 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 109move_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 1161: 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 125