~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/alpha/kernel/head.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * arch/alpha/kernel/head.S
  4  *
  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.
  9  */
 10 
 11 #include <linux/init.h>
 12 #include <asm/asm-offsets.h>
 13 #include <asm/pal.h>
 14 #include <asm/setup.h>
 15 
 16 __HEAD
 17 .globl _stext
 18         .set noreorder
 19         .globl  __start
 20         .ent    __start
 21 _stext:
 22 __start:
 23         .prologue 0
 24         br      $27,1f
 25 1:      ldgp    $29,0($27)
 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.  */
 31         jsr     $26,start_kernel
 32         call_pal PAL_halt
 33         .end __start
 34 
 35 #ifdef CONFIG_SMP
 36         .align 3
 37         .globl  __smp_callin
 38         .ent    __smp_callin
 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.  */
 43 __smp_callin:
 44         .prologue 1
 45         ldgp    $29,0($27)      # First order of business, load the GP.
 46 
 47         call_pal PAL_rduniq     # Grab the target PCBB.
 48         mov     $0,$16          # Install it.
 49         call_pal PAL_swpctx
 50 
 51         lda     $8,0x3fff       # Find "current".
 52         bic     $30,$8,$8
 53         
 54         jsr     $26,smp_callin
 55         call_pal PAL_halt
 56         .end __smp_callin
 57 #endif /* CONFIG_SMP */
 58 
 59         #
 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
 63         #
 64 
 65         .align 3
 66         .globl  cserve_ena
 67         .ent    cserve_ena
 68 cserve_ena:
 69         .prologue 0
 70         bis     $16,$16,$17
 71         lda     $16,52($31)
 72         call_pal PAL_cserve
 73         ret     ($26)
 74         .end    cserve_ena
 75 
 76         .align 3
 77         .globl  cserve_dis
 78         .ent    cserve_dis
 79 cserve_dis:
 80         .prologue 0
 81         bis     $16,$16,$17
 82         lda     $16,53($31)
 83         call_pal PAL_cserve
 84         ret     ($26)
 85         .end    cserve_dis
 86 
 87         #
 88         # It is handy, on occasion, to make halt actually just loop. 
 89         # Putting it here means we dont have to recompile the whole
 90         # kernel.
 91         #
 92 
 93         .align 3
 94         .globl  halt
 95         .ent    halt
 96 halt:
 97         .prologue 0
 98         call_pal PAL_halt
 99         .end    halt

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php