1 /* SPDX-License-Identifier: GPL-2.0 */
3 * arch/alpha/kernel/head.S
5 * initial boot stuff.. At this point, the bootloader has already
6 * switched into OSF/1 PAL-code, and loaded us at the correct address
7 * (START_ADDR). So there isn't much left for us to do: just set up
8 * the kernel global pointer and jump to the kernel entry-point.
11 #include <linux/init.h>
12 #include <asm/asm-offsets.h>
14 #include <asm/setup.h>
26 /* We need to get current_task_info loaded up... */
27 lda $8,init_thread_union
28 /* ... and find our stack ... */
29 lda $30,0x4000 - SIZEOF_PT_REGS($8)
30 /* ... and then we can start the kernel. */
39 /* On entry here from SRM console, the HWPCB of the per-cpu
40 slot for this processor has been loaded. We've arranged
41 for the UNIQUE value for this process to contain the PCBB
42 of the target idle task. */
45 ldgp $29,0($27) # First order of business, load the GP.
47 call_pal PAL_rduniq # Grab the target PCBB.
48 mov $0,$16 # Install it.
51 lda $8,0x3fff # Find "current".
57 #endif /* CONFIG_SMP */
60 # The following two functions are needed for supporting SRM PALcode
61 # on the PC164 (at least), since that PALcode manages the interrupt
62 # masking, and we cannot duplicate the effort without causing problems
88 # It is handy, on occasion, to make halt actually just loop.
89 # Putting it here means we dont have to recompile the whole