mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 14:30:50 +00:00 
			
		
		
		
	 f30c226954
			
		
	
	
		f30c226954
		
	
	
	
	
		
			
			Many files include the filename at the beginning, serveral used a wrong one. Signed-off-by: Uwe Zeisberger <Uwe_Zeisberger@digi.com> Signed-off-by: Adrian Bunk <bunk@stusta.de>
		
			
				
	
	
		
			87 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * linux/arch/arm/boot/compressed/head-clps7500.S
 | |
|  *
 | |
|  * Copyright (C) 1999, 2000, 2001 Nexus Electronics Ltd
 | |
|  */
 | |
| 
 | |
| 
 | |
| 		/* There are three different ways the kernel can be
 | |
| 		   booted on a 7500 system: from Angel (loaded in RAM), from
 | |
| 		   16-bit ROM or from 32-bit Flash.  Luckily, a single kernel
 | |
| 		   image does for them all. */
 | |
| 		/* This branch is taken if the CPU memory width matches the
 | |
| 		   actual device in use.  The default at power on is 16 bits
 | |
| 		   so we must be prepared for a mismatch. */
 | |
| 		.section ".start", "ax"
 | |
| 2:
 | |
| 		b	1f
 | |
| 		.word	0xffff
 | |
| 		.word	0xb632		@ mov r11, #0x03200000
 | |
| 		.word	0xe3a0
 | |
| 		.word	0x0000		@ mov r0, #0
 | |
| 		.word	0xe3a0
 | |
| 		.word	0x0080		@ strb r0, [r11, #0x80]
 | |
| 		.word	0xe5cb
 | |
| 		.word	0xf000		@ mov pc, #0
 | |
| 		.word	0xe3a0
 | |
| 1:
 | |
| 		adr	r1, 2b
 | |
| 		teq	r1, #0
 | |
| 		bne	.Langel
 | |
| 		/* This is a direct-from-ROM boot.  Copy the kernel into 
 | |
| 		   RAM and run it there. */
 | |
| 		mov	r0, #0x30
 | |
| 		mcr	p15, 0, r0, c1, c0, 0
 | |
| 		mov	r0, #0x13
 | |
| 		msr	cpsr_cxsf, r0
 | |
| 		mov	r12, #0x03000000	@ point to LEDs
 | |
| 		orr	r12, r12, #0x00020000
 | |
| 		orr	r12, r12, #0xba00
 | |
| 		mov	r0, #0x5500
 | |
| 		str	r0, [r12]
 | |
| 		mov	r0, #0x10000000
 | |
| 		orr	r0, r0, #0x8000
 | |
| 		mov	r4, r0
 | |
| 		ldr	r2, =_end
 | |
| 2:
 | |
| 		ldr	r3, [r1], #4
 | |
| 		str	r3, [r0], #4
 | |
| 		teq	r0, r2
 | |
| 		bne	2b
 | |
| 		mov	r0, #0xff00
 | |
| 		str	r0, [r12]
 | |
| 1:	
 | |
| 		mov	r12, #0x03000000	@ point to LEDs
 | |
| 		orr	r12, r12, #0x00020000
 | |
| 		orr	r12, r12, #0xba00
 | |
| 		mov	r0, #0xfe00
 | |
| 		str	r0, [r12]
 | |
| 
 | |
| 		adr	lr, 1f
 | |
| 		mov	r0, #0
 | |
| 		mov	r1, #14		/* MACH_TYPE_CLPS7500 */
 | |
| 		mov	pc, lr
 | |
| .Langel:
 | |
| #ifdef CONFIG_ANGELBOOT
 | |
| 		/* Call Angel to switch into SVC mode. */
 | |
| 		mov	r0, #0x17
 | |
| 		swi	0x123456
 | |
| #endif
 | |
| 		/* Ensure all interrupts are off and MMU disabled */
 | |
| 		mrs	r0, cpsr
 | |
| 		orr	r0, r0, #0xc0
 | |
| 		msr	cpsr_cxsf, r0
 | |
| 
 | |
| 		adr	lr, 1b
 | |
| 		orr	lr, lr, #0x10000000
 | |
| 		mov	r0, #0x30		@ MMU off
 | |
| 		mcr	p15, 0, r0, c1, c0, 0
 | |
| 		mov	r0, r0
 | |
| 	 	mov	pc, lr
 | |
| 
 | |
| 		.ltorg
 | |
| 
 | |
| 1:
 | |
| /* And the rest */
 | |
| #include "head.S"
 |