11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * arch/alpha/boot/head.S 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * initial bootloader stuff.. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .set noreorder 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl __start 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent __start 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds__start: 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds br $29,2f 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds2: ldgp $29,0($29) 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds jsr $26,start_kernel 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds call_pal PAL_halt 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end __start 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .align 5 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl wrent 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent wrent 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldswrent: 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .prologue 0 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds call_pal PAL_wrent 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ret ($26) 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end wrent 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .align 5 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl wrkgp 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent wrkgp 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldswrkgp: 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .prologue 0 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds call_pal PAL_wrkgp 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ret ($26) 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end wrkgp 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .align 5 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl switch_to_osf_pal 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent switch_to_osf_pal 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsswitch_to_osf_pal: 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds subq $30,128,$30 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .frame $30,128,$26 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $26,0($30) 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $1,8($30) 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $2,16($30) 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $3,24($30) 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $4,32($30) 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $5,40($30) 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $6,48($30) 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $7,56($30) 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $8,64($30) 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $9,72($30) 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $10,80($30) 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $11,88($30) 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $12,96($30) 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $13,104($30) 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $14,112($30) 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $15,120($30) 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .prologue 0 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $30,0($17) /* save KSP in PCB */ 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds bis $30,$30,$20 /* a4 = KSP */ 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds br $17,1f 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $26,0($30) 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $1,8($30) 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $2,16($30) 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $3,24($30) 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $4,32($30) 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $5,40($30) 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $6,48($30) 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $7,56($30) 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $8,64($30) 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $9,72($30) 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $10,80($30) 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $11,88($30) 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $12,96($30) 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $13,104($30) 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $14,112($30) 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ldq $15,120($30) 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds addq $30,128,$30 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ret ($26) 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds1: call_pal PAL_swppal 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end switch_to_osf_pal 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .align 3 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl tbi 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent tbi 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstbi: 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .prologue 0 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds call_pal PAL_tbi 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ret ($26) 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end tbi 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .align 3 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl halt 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent halt 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldshalt: 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .prologue 0 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds call_pal PAL_halt 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end halt 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $16 - new stack page */ 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .align 3 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .globl move_stack 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .ent move_stack 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsmove_stack: 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .prologue 0 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds lda $0, 0x1fff($31) 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds and $0, $30, $1 /* Stack offset */ 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds or $1, $16, $16 /* New stack pointer */ 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds mov $30, $1 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds mov $16, $2 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds1: ldq $3, 0($1) /* Move the stack */ 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds addq $1, 8, $1 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds stq $3, 0($2) 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds and $0, $1, $4 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds addq $2, 8, $2 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds bne $4, 1b 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds mov $16, $30 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ret ($26) 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .end move_stack 123