53 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
	
		
			1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * This file is subject to the terms and conditions of the GNU General Public
							 | 
						||
| 
								 | 
							
								 * License.  See the file "COPYING" in the main directory of this archive
							 | 
						||
| 
								 | 
							
								 * for more details.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Chris Dearman (chris@mips.com)
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2007 Mips Technologies, Inc.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#ifndef __ASM_MACH_MIPS_KERNEL_ENTRY_INIT_H
							 | 
						||
| 
								 | 
							
								#define __ASM_MACH_MIPS_KERNEL_ENTRY_INIT_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									.macro	kernel_entry_setup
							 | 
						||
| 
								 | 
							
								#ifdef CONFIG_MIPS_MT_SMTC
							 | 
						||
| 
								 | 
							
									mfc0	t0, CP0_CONFIG
							 | 
						||
| 
								 | 
							
									bgez	t0, 9f
							 | 
						||
| 
								 | 
							
									mfc0	t0, CP0_CONFIG, 1
							 | 
						||
| 
								 | 
							
									bgez	t0, 9f
							 | 
						||
| 
								 | 
							
									mfc0	t0, CP0_CONFIG, 2
							 | 
						||
| 
								 | 
							
									bgez	t0, 9f
							 | 
						||
| 
								 | 
							
									mfc0	t0, CP0_CONFIG, 3
							 | 
						||
| 
								 | 
							
									and	t0, 1<<2
							 | 
						||
| 
								 | 
							
									bnez	t0, 0f
							 | 
						||
| 
								 | 
							
								9:
							 | 
						||
| 
								 | 
							
									/* Assume we came from YAMON... */
							 | 
						||
| 
								 | 
							
									PTR_LA	v0, 0x9fc00534	/* YAMON print */
							 | 
						||
| 
								 | 
							
									lw	v0, (v0)
							 | 
						||
| 
								 | 
							
									move	a0, zero
							 | 
						||
| 
								 | 
							
									PTR_LA	a1, nonmt_processor
							 | 
						||
| 
								 | 
							
									jal	v0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									PTR_LA	v0, 0x9fc00520	/* YAMON exit */
							 | 
						||
| 
								 | 
							
									lw	v0, (v0)
							 | 
						||
| 
								 | 
							
									li	a0, 1
							 | 
						||
| 
								 | 
							
									jal	v0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1:	b	1b
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									__INITDATA
							 | 
						||
| 
								 | 
							
								nonmt_processor:
							 | 
						||
| 
								 | 
							
									.asciz	"SMTC kernel requires the MT ASE to run\n"
							 | 
						||
| 
								 | 
							
									__FINIT
							 | 
						||
| 
								 | 
							
								0:
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
									.endm
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								 * Do SMP slave processor setup necessary before we can safely execute C code.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
									.macro	smp_slave_setup
							 | 
						||
| 
								 | 
							
									.endm
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* __ASM_MACH_MIPS_KERNEL_ENTRY_INIT_H */
							 |