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