Disintegrate asm/system.h for Alpha. Signed-off-by: David Howells <dhowells@redhat.com> cc: linux-alpha@vger.kernel.org
		
			
				
	
	
		
			98 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
	
		
			2.1 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/*
 | 
						|
 * arch/alpha/kernel/head.S
 | 
						|
 *
 | 
						|
 * initial boot stuff.. At this point, the bootloader has already
 | 
						|
 * switched into OSF/1 PAL-code, and loaded us at the correct address
 | 
						|
 * (START_ADDR).  So there isn't much left for us to do: just set up
 | 
						|
 * the kernel global pointer and jump to the kernel entry-point.
 | 
						|
 */
 | 
						|
 | 
						|
#include <linux/init.h>
 | 
						|
#include <asm/asm-offsets.h>
 | 
						|
#include <asm/pal.h>
 | 
						|
#include <asm/setup.h>
 | 
						|
 | 
						|
__HEAD
 | 
						|
.globl _stext
 | 
						|
	.set noreorder
 | 
						|
	.globl	__start
 | 
						|
	.ent	__start
 | 
						|
_stext:
 | 
						|
__start:
 | 
						|
	.prologue 0
 | 
						|
	br	$27,1f
 | 
						|
1:	ldgp	$29,0($27)
 | 
						|
	/* We need to get current_task_info loaded up...  */
 | 
						|
	lda	$8,init_thread_union
 | 
						|
	/* ... and find our stack ... */
 | 
						|
	lda	$30,0x4000 - SIZEOF_PT_REGS($8)
 | 
						|
	/* ... and then we can start the kernel.  */
 | 
						|
	jsr	$26,start_kernel
 | 
						|
	call_pal PAL_halt
 | 
						|
	.end __start
 | 
						|
 | 
						|
#ifdef CONFIG_SMP
 | 
						|
	.align 3
 | 
						|
	.globl	__smp_callin
 | 
						|
	.ent	__smp_callin
 | 
						|
	/* On entry here from SRM console, the HWPCB of the per-cpu
 | 
						|
	   slot for this processor has been loaded.  We've arranged
 | 
						|
	   for the UNIQUE value for this process to contain the PCBB
 | 
						|
	   of the target idle task.  */
 | 
						|
__smp_callin:
 | 
						|
	.prologue 1
 | 
						|
	ldgp	$29,0($27)	# First order of business, load the GP.
 | 
						|
 | 
						|
	call_pal PAL_rduniq	# Grab the target PCBB.
 | 
						|
	mov	$0,$16		# Install it.
 | 
						|
	call_pal PAL_swpctx
 | 
						|
 | 
						|
	lda	$8,0x3fff	# Find "current".
 | 
						|
	bic	$30,$8,$8
 | 
						|
	
 | 
						|
	jsr	$26,smp_callin
 | 
						|
	call_pal PAL_halt
 | 
						|
	.end __smp_callin
 | 
						|
#endif /* CONFIG_SMP */
 | 
						|
 | 
						|
	#
 | 
						|
	# The following two functions are needed for supporting SRM PALcode
 | 
						|
	# on the PC164 (at least), since that PALcode manages the interrupt
 | 
						|
	# masking, and we cannot duplicate the effort without causing problems
 | 
						|
	#
 | 
						|
 | 
						|
	.align 3
 | 
						|
	.globl	cserve_ena
 | 
						|
	.ent	cserve_ena
 | 
						|
cserve_ena:
 | 
						|
	.prologue 0
 | 
						|
	bis	$16,$16,$17
 | 
						|
	lda	$16,52($31)
 | 
						|
	call_pal PAL_cserve
 | 
						|
	ret	($26)
 | 
						|
	.end	cserve_ena
 | 
						|
 | 
						|
	.align 3
 | 
						|
	.globl	cserve_dis
 | 
						|
	.ent	cserve_dis
 | 
						|
cserve_dis:
 | 
						|
	.prologue 0
 | 
						|
	bis	$16,$16,$17
 | 
						|
	lda	$16,53($31)
 | 
						|
	call_pal PAL_cserve
 | 
						|
	ret	($26)
 | 
						|
	.end	cserve_dis
 | 
						|
 | 
						|
	#
 | 
						|
	# It is handy, on occasion, to make halt actually just loop. 
 | 
						|
	# Putting it here means we dont have to recompile the whole
 | 
						|
	# kernel.
 | 
						|
	#
 | 
						|
 | 
						|
	.align 3
 | 
						|
	.globl	halt
 | 
						|
	.ent	halt
 | 
						|
halt:
 | 
						|
	.prologue 0
 | 
						|
	call_pal PAL_halt
 | 
						|
	.end	halt
 |