/*1* arch/alpha/kernel/head.S2*3* initial boot stuff.. At this point, the bootloader has already4* switched into OSF/1 PAL-code, and loaded us at the correct address5* (START_ADDR). So there isn't much left for us to do: just set up6* the kernel global pointer and jump to the kernel entry-point.7*/89#include <linux/init.h>10#include <asm/system.h>11#include <asm/asm-offsets.h>1213__HEAD14.globl swapper_pg_dir15.globl _stext16swapper_pg_dir=SWAPPER_PGD1718.set noreorder19.globl __start20.ent __start21_stext:22__start:23.prologue 024br $27,1f251: ldgp $29,0($27)26/* We need to get current_task_info loaded up... */27lda $8,init_thread_union28/* ... and find our stack ... */29lda $30,0x4000 - SIZEOF_PT_REGS($8)30/* ... and then we can start the kernel. */31jsr $26,start_kernel32call_pal PAL_halt33.end __start3435#ifdef CONFIG_SMP36.align 337.globl __smp_callin38.ent __smp_callin39/* On entry here from SRM console, the HWPCB of the per-cpu40slot for this processor has been loaded. We've arranged41for the UNIQUE value for this process to contain the PCBB42of the target idle task. */43__smp_callin:44.prologue 145ldgp $29,0($27) # First order of business, load the GP.4647call_pal PAL_rduniq # Grab the target PCBB.48mov $0,$16 # Install it.49call_pal PAL_swpctx5051lda $8,0x3fff # Find "current".52bic $30,$8,$85354jsr $26,smp_callin55call_pal PAL_halt56.end __smp_callin57#endif /* CONFIG_SMP */5859#60# The following two functions are needed for supporting SRM PALcode61# on the PC164 (at least), since that PALcode manages the interrupt62# masking, and we cannot duplicate the effort without causing problems63#6465.align 366.globl cserve_ena67.ent cserve_ena68cserve_ena:69.prologue 070bis $16,$16,$1771lda $16,52($31)72call_pal PAL_cserve73ret ($26)74.end cserve_ena7576.align 377.globl cserve_dis78.ent cserve_dis79cserve_dis:80.prologue 081bis $16,$16,$1782lda $16,53($31)83call_pal PAL_cserve84ret ($26)85.end cserve_dis8687#88# It is handy, on occasion, to make halt actually just loop.89# Putting it here means we dont have to recompile the whole90# kernel.91#9293.align 394.globl halt95.ent halt96halt:97.prologue 098call_pal PAL_halt99.end halt100101102