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