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 */
|