mirror of
https://github.com/torvalds/linux.git
synced 2024-12-15 15:41:58 +00:00
7b7dfdd2b9
Adds SMP support for Berlin SoCs. Secondary CPUs are reset, then execute the instruction we put in the reset exception register, setting the pc at the address contained in the software reset address register, which is the physical address of the Berlin secondary startup. This implementation avoid using the pen lock mechanism. Signed-off-by: Antoine Ténart <antoine.tenart@free-electrons.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
31 lines
744 B
ArmAsm
31 lines
744 B
ArmAsm
/*
|
|
* Copyright (C) 2014 Marvell Technology Group Ltd.
|
|
*
|
|
* Antoine Ténart <antoine.tenart@free-electrons.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <linux/linkage.h>
|
|
#include <linux/init.h>
|
|
#include <asm/assembler.h>
|
|
|
|
ENTRY(berlin_secondary_startup)
|
|
ARM_BE8(setend be)
|
|
bl v7_invalidate_l1
|
|
b secondary_startup
|
|
ENDPROC(berlin_secondary_startup)
|
|
|
|
/*
|
|
* If the following instruction is set in the reset exception vector, CPUs
|
|
* will fetch the value of the software reset address vector when being
|
|
* reset.
|
|
*/
|
|
.global boot_inst
|
|
boot_inst:
|
|
ldr pc, [pc, #140]
|
|
|
|
.align
|