diff mbox series

[v2,3/4] platform: Apply relocatable address

Message ID IA1PR20MB495323C838505F085A4E402CBB552@IA1PR20MB4953.namprd20.prod.outlook.com
State Accepted
Headers show
Series Add relocatable address support for jump and payload firmware | expand

Commit Message

Inochi Amaoto Feb. 23, 2024, 8:18 a.m. UTC
Since jump and payload firmware support relocatable address, make
general platform use runtime relocatable address.

Signed-off-by: Inochi Amaoto <inochiama@outlook.com>
---
 platform/generic/objects.mk  |  8 ++++----
 platform/template/objects.mk | 17 +++++++++++++++++
 2 files changed, 21 insertions(+), 4 deletions(-)

Comments

Anup Patel Feb. 24, 2024, 10:59 a.m. UTC | #1
On Fri, Feb 23, 2024 at 1:48 PM Inochi Amaoto <inochiama@outlook.com> wrote:
>
> Since jump and payload firmware support relocatable address, make
> general platform use runtime relocatable address.
>
> Signed-off-by: Inochi Amaoto <inochiama@outlook.com>

LGTM.

Reviewed-by: Anup Patel <anup@brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>  platform/generic/objects.mk  |  8 ++++----
>  platform/template/objects.mk | 17 +++++++++++++++++
>  2 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/platform/generic/objects.mk b/platform/generic/objects.mk
> index 136853e..85aa723 100644
> --- a/platform/generic/objects.mk
> +++ b/platform/generic/objects.mk
> @@ -27,12 +27,12 @@ FW_DYNAMIC=y
>  FW_JUMP=y
>  ifeq ($(PLATFORM_RISCV_XLEN), 32)
>    # This needs to be 4MB aligned for 32-bit system
> -  FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000)))
> +  FW_JUMP_OFFSET=0x400000
>  else
>    # This needs to be 2MB aligned for 64-bit system
> -  FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000)))
> +  FW_JUMP_OFFSET=0x200000
>  endif
> -FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000)))
> +FW_JUMP_FDT_OFFSET=0x2200000
>  FW_PAYLOAD=y
>  ifeq ($(PLATFORM_RISCV_XLEN), 32)
>    # This needs to be 4MB aligned for 32-bit system
> @@ -41,4 +41,4 @@ else
>    # This needs to be 2MB aligned for 64-bit system
>    FW_PAYLOAD_OFFSET=0x200000
>  endif
> -FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)
> +FW_PAYLOAD_FDT_OFFSET=$(FW_JUMP_FDT_OFFSET)
> diff --git a/platform/template/objects.mk b/platform/template/objects.mk
> index 0025928..b143cbc 100644
> --- a/platform/template/objects.mk
> +++ b/platform/template/objects.mk
> @@ -63,6 +63,17 @@ FW_JUMP=<y|n>
>  # This needs to be 4MB aligned for 32-bit support
>  # This needs to be 2MB aligned for 64-bit support
>  # ifeq ($(PLATFORM_RISCV_XLEN), 32)
> +# FW_JUMP_OFFSET=0x400000
> +# else
> +# FW_JUMP_OFFSET=0x200000
> +# endif
> +# FW_JUMP_FDT_OFFSET=0x2200000
> +#
> +# You can use fixed address for jump firmware as an alternative option,
> +# but this may fail when setting wrong FW_TEXT_START. Use with caution.
> +# SBI will prefer "<X>_ADDR" if both "<X>_ADDR" and "<X>_OFFSET" are
> +# defined
> +# ifeq ($(PLATFORM_RISCV_XLEN), 32)
>  # FW_JUMP_ADDR=0x80400000
>  # else
>  # FW_JUMP_ADDR=0x80200000
> @@ -84,4 +95,10 @@ FW_PAYLOAD_OFFSET=0x200000
>  endif
>  # FW_PAYLOAD_ALIGN=0x1000
>  # FW_PAYLOAD_PATH="path to next boot stage binary image file"
> +# FW_PAYLOAD_FDT_OFFSET=0x2200000
> +#
> +# You can use fixed address for payload firmware as an alternative option,
> +# but this may fail when setting wrong FW_TEXT_START. Use with caution.
> +# SBI will prefer "FW_PAYLOAD_FDT_ADDR" if both "FW_PAYLOAD_FDT_OFFSET"
> +# and "FW_PAYLOAD_FDT_ADDR" are defined.
>  # FW_PAYLOAD_FDT_ADDR=0x82200000
> --
> 2.43.2
>
diff mbox series

Patch

diff --git a/platform/generic/objects.mk b/platform/generic/objects.mk
index 136853e..85aa723 100644
--- a/platform/generic/objects.mk
+++ b/platform/generic/objects.mk
@@ -27,12 +27,12 @@  FW_DYNAMIC=y
 FW_JUMP=y
 ifeq ($(PLATFORM_RISCV_XLEN), 32)
   # This needs to be 4MB aligned for 32-bit system
-  FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x400000)))
+  FW_JUMP_OFFSET=0x400000
 else
   # This needs to be 2MB aligned for 64-bit system
-  FW_JUMP_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x200000)))
+  FW_JUMP_OFFSET=0x200000
 endif
-FW_JUMP_FDT_ADDR=$(shell printf "0x%X" $$(($(FW_TEXT_START) + 0x2200000)))
+FW_JUMP_FDT_OFFSET=0x2200000
 FW_PAYLOAD=y
 ifeq ($(PLATFORM_RISCV_XLEN), 32)
   # This needs to be 4MB aligned for 32-bit system
@@ -41,4 +41,4 @@  else
   # This needs to be 2MB aligned for 64-bit system
   FW_PAYLOAD_OFFSET=0x200000
 endif
-FW_PAYLOAD_FDT_ADDR=$(FW_JUMP_FDT_ADDR)
+FW_PAYLOAD_FDT_OFFSET=$(FW_JUMP_FDT_OFFSET)
diff --git a/platform/template/objects.mk b/platform/template/objects.mk
index 0025928..b143cbc 100644
--- a/platform/template/objects.mk
+++ b/platform/template/objects.mk
@@ -63,6 +63,17 @@  FW_JUMP=<y|n>
 # This needs to be 4MB aligned for 32-bit support
 # This needs to be 2MB aligned for 64-bit support
 # ifeq ($(PLATFORM_RISCV_XLEN), 32)
+# FW_JUMP_OFFSET=0x400000
+# else
+# FW_JUMP_OFFSET=0x200000
+# endif
+# FW_JUMP_FDT_OFFSET=0x2200000
+#
+# You can use fixed address for jump firmware as an alternative option,
+# but this may fail when setting wrong FW_TEXT_START. Use with caution.
+# SBI will prefer "<X>_ADDR" if both "<X>_ADDR" and "<X>_OFFSET" are
+# defined
+# ifeq ($(PLATFORM_RISCV_XLEN), 32)
 # FW_JUMP_ADDR=0x80400000
 # else
 # FW_JUMP_ADDR=0x80200000
@@ -84,4 +95,10 @@  FW_PAYLOAD_OFFSET=0x200000
 endif
 # FW_PAYLOAD_ALIGN=0x1000
 # FW_PAYLOAD_PATH="path to next boot stage binary image file"
+# FW_PAYLOAD_FDT_OFFSET=0x2200000
+#
+# You can use fixed address for payload firmware as an alternative option,
+# but this may fail when setting wrong FW_TEXT_START. Use with caution.
+# SBI will prefer "FW_PAYLOAD_FDT_ADDR" if both "FW_PAYLOAD_FDT_OFFSET"
+# and "FW_PAYLOAD_FDT_ADDR" are defined.
 # FW_PAYLOAD_FDT_ADDR=0x82200000