mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-28 05:24:47 +08:00
3ee851e212
This patch add basic rk3288 smp support. Only cortex-A9 need invalid L1, A7/A12/A15/A17 should not invalid L1, since for A7/A12/A15, the invalidation would be taken as clean and invalidate. If you use the software manual invalidation instead of hardware invalidation (assert l1/l2rstdisable during reset) after reset, there is tiny change that some cachelines would be in dirty and valid state after reset(since the ram content would be random value after reset), then the unexpected clean might lead to system crash. It is a known issue for the A12/A17 MPCore multiprocessor that the active processors might be stalled when the individual processor is powered down, we can avoid this prolbem by softreset the processor before power it down. Signed-off-by: Kever Yang <kever.yang@rock-chips.com> Tested-by: Kevin Hilman <khilman@linaro.org> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
34 lines
1.0 KiB
ArmAsm
34 lines
1.0 KiB
ArmAsm
/*
|
|
* Copyright (c) 2013 MundoReader S.L.
|
|
* Author: Heiko Stuebner <heiko@sntech.de>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
#include <linux/linkage.h>
|
|
#include <linux/init.h>
|
|
|
|
ENTRY(rockchip_secondary_startup)
|
|
mrc p15, 0, r0, c0, c0, 0 @ read main ID register
|
|
ldr r1, =0x00000c09 @ Cortex-A9 primary part number
|
|
teq r0, r1
|
|
beq v7_invalidate_l1
|
|
b secondary_startup
|
|
ENDPROC(rockchip_secondary_startup)
|
|
|
|
ENTRY(rockchip_secondary_trampoline)
|
|
ldr pc, 1f
|
|
ENDPROC(rockchip_secondary_trampoline)
|
|
.globl rockchip_boot_fn
|
|
rockchip_boot_fn:
|
|
1: .space 4
|
|
|
|
ENTRY(rockchip_secondary_trampoline_end)
|