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