[U-Boot,v4,1/2] arm: add save_boot_params for ARM1176
diff mbox

Message ID 1478861947-28786-2-git-send-email-cschieli@gmail.com
State Accepted
Commit 3e10fcde3f3c24a488866dd33fa3f5d46ff3d7a3
Delegated to: Tom Rini
Headers show

Commit Message

Cédric Schieli Nov. 11, 2016, 10:59 a.m. UTC
Implement a hook to allow boards to save boot-time CPU state for later
use. When U-Boot is chain-loaded by another bootloader, CPU registers may
contain useful information such as system configuration information. This
feature mirrors the equivalent ARMv7 feature.

Signed-off-by: Cédric Schieli <cschieli@gmail.com>
---

Changes in v4:
- add save_boot_params hook for ARM1176 to make the passthrough work
  on ARMv6-based original Pis

Changes in v3: None
Changes in v2: None

 arch/arm/cpu/arm1176/start.S | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Stephen Warren Nov. 11, 2016, 4:51 p.m. UTC | #1
On 11/11/2016 03:59 AM, Cédric Schieli wrote:
> Implement a hook to allow boards to save boot-time CPU state for later
> use. When U-Boot is chain-loaded by another bootloader, CPU registers may
> contain useful information such as system configuration information. This
> feature mirrors the equivalent ARMv7 feature.

Acked-by: Stephen Warren <swarren@nvidia.com>
Tom Rini Nov. 22, 2016, 2:57 a.m. UTC | #2
On Fri, Nov 11, 2016 at 11:59:06AM +0100, Cédric Schieli wrote:

> Implement a hook to allow boards to save boot-time CPU state for later
> use. When U-Boot is chain-loaded by another bootloader, CPU registers may
> contain useful information such as system configuration information. This
> feature mirrors the equivalent ARMv7 feature.
> 
> Signed-off-by: Cédric Schieli <cschieli@gmail.com>
> Acked-by: Stephen Warren <swarren@nvidia.com>

Applied to u-boot/master, thanks!

Patch
diff mbox

diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S
index a602d4e..7c00201 100644
--- a/arch/arm/cpu/arm1176/start.S
+++ b/arch/arm/cpu/arm1176/start.S
@@ -16,6 +16,7 @@ 
 
 #include <asm-offsets.h>
 #include <config.h>
+#include <linux/linkage.h>
 
 #ifndef CONFIG_SYS_PHY_UBOOT_BASE
 #define CONFIG_SYS_PHY_UBOOT_BASE	CONFIG_SYS_UBOOT_BASE
@@ -37,6 +38,11 @@ 
 	.globl reset
 
 reset:
+	/* Allow the board to save important registers */
+	b	save_boot_params
+.globl	save_boot_params_ret
+save_boot_params_ret:
+
 	/*
 	 * set the cpu to SVC32 mode
 	 */
@@ -110,3 +116,7 @@  mmu_disable_phys:
 c_runtime_cpu_setup:
 
 	mov	pc, lr
+
+WEAK(save_boot_params)
+	b	save_boot_params_ret	/* back to my caller */
+ENDPROC(save_boot_params)