mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-30 19:48:19 +00:00 
			
		
		
		
	Various files are needlessly rebuilt every time due to the version and build time changing. As version.h is not actually needed, remove the include. Signed-off-by: Rob Herring <robh@kernel.org> Cc: Albert Aribaud <albert.u.boot@aribaud.net> Cc: Stefano Babic <sbabic@denx.de> Cc: Minkyu Kang <mk7.kang@samsung.com> Cc: Marek Vasut <marex@denx.de> Cc: Tom Warren <twarren@nvidia.com> Cc: Michal Simek <monstr@monstr.eu> Cc: Macpaul Lin <macpaul@andestech.com> Cc: Wolfgang Denk <wd@denx.de> Cc: York Sun <yorksun@freescale.com> Cc: Stefan Roese <sr@denx.de> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> Cc: Simon Glass <sjg@chromium.org> Cc: Philippe Reynes <tremyfr@yahoo.fr> Cc: Eric Jarrige <eric.jarrige@armadeus.org> Cc: "David Müller" <d.mueller@elsoft.ch> Cc: Phil Edworthy <phil.edworthy@renesas.com> Cc: Robert Baldyga <r.baldyga@samsung.com> Cc: Torsten Koschorrek <koschorrek@synertronixx.de> Cc: Anatolij Gustschin <agust@denx.de> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Łukasz Majewski <l.majewski@samsung.com>
		
			
				
	
	
		
			151 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * Copyright 2004, 2007, 2008 Freescale Semiconductor.
 | |
|  * Srikanth Srinivasan <srikanth.srinivaan@freescale.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0+
 | |
|  */
 | |
| #include <config.h>
 | |
| #include <mpc86xx.h>
 | |
| 
 | |
| #include <ppc_asm.tmpl>
 | |
| #include <ppc_defs.h>
 | |
| 
 | |
| #include <asm/cache.h>
 | |
| #include <asm/mmu.h>
 | |
| 
 | |
| /* If this is a multi-cpu system then we need to handle the
 | |
|  * 2nd cpu.  The assumption is that the 2nd cpu is being
 | |
|  * held in boot holdoff mode until the 1st cpu unlocks it
 | |
|  * from Linux.	We'll do some basic cpu init and then pass
 | |
|  * it to the Linux Reset Vector.
 | |
|  * Sri:	 Much of this initialization is not required. Linux
 | |
|  * rewrites the bats, and the sprs and also enables the L1 cache.
 | |
|  *
 | |
|  * Core 0 must copy this to a 1M aligned region and set BPTR
 | |
|  * to point to it.
 | |
|  */
 | |
| 	.align 12
 | |
| .globl __secondary_start_page
 | |
| __secondary_start_page:
 | |
| 	.space 0x100	/* space over to reset vector loc */
 | |
| 	mfspr	r0, MSSCR0
 | |
| 	andi.	r0, r0, 0x0020
 | |
| 	rlwinm	r0,r0,27,31,31
 | |
| 	mtspr	PIR, r0
 | |
| 
 | |
| 	/* Invalidate BATs */
 | |
| 	li	r0, 0
 | |
| 	mtspr	IBAT0U, r0
 | |
| 	mtspr	IBAT1U, r0
 | |
| 	mtspr	IBAT2U, r0
 | |
| 	mtspr	IBAT3U, r0
 | |
| 	mtspr	IBAT4U, r0
 | |
| 	mtspr	IBAT5U, r0
 | |
| 	mtspr	IBAT6U, r0
 | |
| 	mtspr	IBAT7U, r0
 | |
| 	isync
 | |
| 	mtspr	DBAT0U, r0
 | |
| 	mtspr	DBAT1U, r0
 | |
| 	mtspr	DBAT2U, r0
 | |
| 	mtspr	DBAT3U, r0
 | |
| 	mtspr	DBAT4U, r0
 | |
| 	mtspr	DBAT5U, r0
 | |
| 	mtspr	DBAT6U, r0
 | |
| 	mtspr	DBAT7U, r0
 | |
| 	isync
 | |
| 	sync
 | |
| 
 | |
| 	/* enable extended addressing */
 | |
| 	mfspr	r0, HID0
 | |
| 	lis	r0, (HID0_HIGH_BAT_EN | HID0_XBSEN | HID0_XAEN)@h
 | |
| 	ori	r0, r0, (HID0_HIGH_BAT_EN | HID0_XBSEN | HID0_XAEN)@l
 | |
| 	mtspr	HID0, r0
 | |
| 	sync
 | |
| 	isync
 | |
| 
 | |
| #ifdef CONFIG_SYS_L2
 | |
| 	/* init the L2 cache */
 | |
| 	addis	r3, r0, L2_INIT@h
 | |
| 	ori	r3, r3, L2_INIT@l
 | |
| 	sync
 | |
| 	mtspr	l2cr, r3
 | |
| #ifdef CONFIG_ALTIVEC
 | |
| 	dssall
 | |
| #endif
 | |
| 	/* invalidate the L2 cache */
 | |
| 	mfspr	r3, l2cr
 | |
| 	rlwinm.	r3, r3, 0, 0, 0
 | |
| 	beq	1f
 | |
| 
 | |
| 	mfspr	r3, l2cr
 | |
| 	rlwinm	r3, r3, 0, 1, 31
 | |
| 
 | |
| #ifdef	CONFIG_ALTIVEC
 | |
| 	dssall
 | |
| #endif
 | |
| 	sync
 | |
| 	mtspr	l2cr, r3
 | |
| 	sync
 | |
| 1:	mfspr	r3, l2cr
 | |
| 	oris	r3, r3, L2CR_L2I@h
 | |
| 	mtspr	l2cr, r3
 | |
| 
 | |
| invl2:
 | |
| 	mfspr	r3, l2cr
 | |
| 	andis.	r3, r3, L2CR_L2I@h
 | |
| 	bne	invl2
 | |
| 	sync
 | |
| #endif
 | |
| 
 | |
| 	/* enable and invalidate the data cache */
 | |
| 	mfspr	r3, HID0
 | |
| 	li	r5, HID0_DCFI|HID0_DLOCK
 | |
| 	andc	r3, r3, r5
 | |
| 	mtspr	HID0, r3		/* no invalidate, unlock */
 | |
| 	ori	r3, r3, HID0_DCE
 | |
| 	ori	r5, r3, HID0_DCFI
 | |
| 	mtspr	HID0, r5		/* enable + invalidate */
 | |
| 	mtspr	HID0, r3		/* enable */
 | |
| 	sync
 | |
| #ifdef CONFIG_SYS_L2
 | |
| 	sync
 | |
| 	lis	r3, L2_ENABLE@h
 | |
| 	ori	r3, r3, L2_ENABLE@l
 | |
| 	mtspr	l2cr, r3
 | |
| 	isync
 | |
| 	sync
 | |
| #endif
 | |
| 
 | |
| 	/* enable and invalidate the instruction cache*/
 | |
| 	mfspr	r3, HID0
 | |
| 	li	r5, HID0_ICFI|HID0_ILOCK
 | |
| 	andc	r3, r3, r5
 | |
| 	ori	r3, r3, HID0_ICE
 | |
| 	ori	r5, r3, HID0_ICFI
 | |
| 	mtspr	HID0, r5
 | |
| 	mtspr	HID0, r3
 | |
| 	isync
 | |
| 	sync
 | |
| 
 | |
| 	/* TBEN in HID0 */
 | |
| 	mfspr	r4, HID0
 | |
| 	oris	r4, r4, 0x0400
 | |
| 	mtspr	HID0, r4
 | |
| 	sync
 | |
| 	isync
 | |
| 
 | |
| 	/* MCP|SYNCBE|ABE in HID1 */
 | |
| 	mfspr	r4, HID1
 | |
| 	oris	r4, r4, 0x8000
 | |
| 	ori	r4, r4, 0x0C00
 | |
| 	mtspr	HID1, r4
 | |
| 	sync
 | |
| 	isync
 | |
| 
 | |
| 	lis	r3, CONFIG_LINUX_RESET_VEC@h
 | |
| 	ori	r3, r3, CONFIG_LINUX_RESET_VEC@l
 | |
| 	mtlr	r3
 | |
| 	blr
 | |
| 
 | |
| 	/* Never Returns, Running in Linux Now */
 |