Commit 577b2441 authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

uniphier: pass SCP base address as a function parameter



Currently, UNIPHIER_SCP_BASE is hard-coded in uniphier_scp_start(),
which is not handy for PIE.

Towards the goal of making this really position-independent, pass in
image_info->image_base.

Change-Id: I88e020a1919c607b1d5ce70b116201d95773bb63
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
parent b79b3177
...@@ -48,7 +48,7 @@ struct image_info; ...@@ -48,7 +48,7 @@ struct image_info;
struct image_info *uniphier_get_image_info(unsigned int image_id); struct image_info *uniphier_get_image_info(unsigned int image_id);
int uniphier_scp_is_running(void); int uniphier_scp_is_running(void);
void uniphier_scp_start(void); void uniphier_scp_start(uint32_t scp_base);
void uniphier_scp_open_com(void); void uniphier_scp_open_com(void);
void uniphier_scp_system_off(void); void uniphier_scp_system_off(void);
void uniphier_scp_system_reset(void); void uniphier_scp_system_reset(void);
......
...@@ -149,12 +149,10 @@ int bl2_plat_handle_pre_image_load(unsigned int image_id) ...@@ -149,12 +149,10 @@ int bl2_plat_handle_pre_image_load(unsigned int image_id)
int bl2_plat_handle_post_image_load(unsigned int image_id) int bl2_plat_handle_post_image_load(unsigned int image_id)
{ {
struct image_info *image_info = uniphier_get_image_info(image_id);
#ifdef UNIPHIER_DECOMPRESS_GZIP #ifdef UNIPHIER_DECOMPRESS_GZIP
struct image_info *image_info;
int ret; int ret;
image_info = uniphier_get_image_info(image_id);
if (!(image_info->h.attr & IMAGE_ATTRIB_SKIP_LOADING)) { if (!(image_info->h.attr & IMAGE_ATTRIB_SKIP_LOADING)) {
ret = image_decompress(uniphier_get_image_info(image_id)); ret = image_decompress(uniphier_get_image_info(image_id));
if (ret) if (ret)
...@@ -163,7 +161,7 @@ int bl2_plat_handle_post_image_load(unsigned int image_id) ...@@ -163,7 +161,7 @@ int bl2_plat_handle_post_image_load(unsigned int image_id)
#endif #endif
if (image_id == SCP_BL2_IMAGE_ID && uniphier_bl2_kick_scp) if (image_id == SCP_BL2_IMAGE_ID && uniphier_bl2_kick_scp)
uniphier_scp_start(); uniphier_scp_start(image_info->image_base);
return 0; return 0;
} }
/* /*
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -28,11 +28,11 @@ int uniphier_scp_is_running(void) ...@@ -28,11 +28,11 @@ int uniphier_scp_is_running(void)
return mmio_read_32(UNIPHIER_STMBE2COM) == UNIPHIER_SCP_READY_MAGIC; return mmio_read_32(UNIPHIER_STMBE2COM) == UNIPHIER_SCP_READY_MAGIC;
} }
void uniphier_scp_start(void) void uniphier_scp_start(uint32_t scp_base)
{ {
uint32_t tmp; uint32_t tmp;
mmio_write_32(UNIPHIER_STMBE2COM + 4, UNIPHIER_SCP_BASE); mmio_write_32(UNIPHIER_STMBE2COM + 4, scp_base);
mmio_write_32(UNIPHIER_STMBE2COM, UNIPHIER_SCP_READY_MAGIC); mmio_write_32(UNIPHIER_STMBE2COM, UNIPHIER_SCP_READY_MAGIC);
do { do {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment