124 lines · 1.8 KB · Assembly
RawDownload
/* SPDX-License-Identifier: GPL-2.0 *//* * arch/alpha/boot/head.S * * initial bootloader stuff.. */ #include <asm/pal.h> 	.set noreorder	.globl	__start	.ent	__start__start:	br	$29,2f2:	ldgp	$29,0($29)	jsr	$26,start_kernel	call_pal PAL_halt	.end __start 	.align 5	.globl	wrent	.ent	wrentwrent:	.prologue 0	call_pal PAL_wrent	ret ($26)	.end wrent 	.align 5	.globl	wrkgp	.ent	wrkgpwrkgp:	.prologue 0	call_pal PAL_wrkgp	ret ($26)	.end wrkgp 	.align 5	.globl	switch_to_osf_pal	.ent	switch_to_osf_palswitch_to_osf_pal:	subq	$30,128,$30	.frame	$30,128,$26	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)	.prologue 0 	stq	$30,0($17)	/* save KSP in PCB */ 	bis	$30,$30,$20	/* a4 = KSP */	br	$17,1f 	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)1:	call_pal PAL_swppal	.end	switch_to_osf_pal 	.align 3	.globl	tbi	.ent	tbitbi:	.prologue 0	call_pal PAL_tbi	ret	($26)	.end tbi 	.align 3	.globl	halt	.ent	halthalt:	.prologue 0	call_pal PAL_halt	.end halt /* $16 - new stack page */	.align 3	.globl	move_stack	.ent	move_stackmove_stack:	.prologue 0	lda	$0, 0x1fff($31)	and	$0, $30, $1			/* Stack offset */	or	$1, $16, $16			/* New stack pointer */	mov	$30, $1	mov	$16, $21:	ldq	$3, 0($1)			/* Move the stack */	addq	$1, 8, $1	stq	$3, 0($2)	and	$0, $1, $4	addq	$2, 8, $2	bne	$4, 1b	mov	$16, $30	ret	($26)	.end move_stack