mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-17 09:21:35 +00:00
99 lines
3.0 KiB
Diff
99 lines
3.0 KiB
Diff
From d39b15b3d3a20118c481957d385b2a98133f9168 Mon Sep 17 00:00:00 2001
|
|
From: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
|
|
Date: Thu, 16 Mar 2023 14:04:31 +0530
|
|
Subject: [PATCH 026/281] OpenWrt: 332-arc-add-OWRTDTB-section.patch
|
|
|
|
arc add OWRTDTB section
|
|
|
|
This change allows OpenWRT to patch resulting kernel binary with
|
|
external .dtb.
|
|
|
|
That allows us to re-use exactky the same vmlinux on different boards
|
|
given its ARC core configurations match (at least cache line sizes etc).
|
|
|
|
""patch-dtb" searches for ASCII "OWRTDTB:" strign and copies external
|
|
.dtb right after it, keeping the string in place.
|
|
|
|
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
|
|
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
|
Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
|
|
|
|
Change-Id: Ic01701dcc122efd87fecf0b2fe807e155a40c853
|
|
Signed-off-by: Ram Chandra Jangir <quic_rjangir@quicinc.com>
|
|
---
|
|
arch/arc/kernel/head.S | 10 ++++++++++
|
|
arch/arc/kernel/setup.c | 4 +++-
|
|
arch/arc/kernel/vmlinux.lds.S | 13 +++++++++++++
|
|
3 files changed, 26 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/arch/arc/kernel/head.S b/arch/arc/kernel/head.S
|
|
index 9152782444b5..167d81ce6ab7 100644
|
|
--- a/arch/arc/kernel/head.S
|
|
+++ b/arch/arc/kernel/head.S
|
|
@@ -88,6 +88,16 @@
|
|
DSP_EARLY_INIT
|
|
.endm
|
|
|
|
+ ; Here "patch-dtb" will embed external .dtb
|
|
+ ; Note "patch-dtb" searches for ASCII "OWRTDTB:" string
|
|
+ ; and pastes .dtb right after it, hense the string precedes
|
|
+ ; __image_dtb symbol.
|
|
+ .section .owrt, "aw",@progbits
|
|
+ .ascii "OWRTDTB:"
|
|
+ENTRY(__image_dtb)
|
|
+ .fill 0x4000
|
|
+END(__image_dtb)
|
|
+
|
|
.section .init.text, "ax",@progbits
|
|
|
|
;----------------------------------------------------------------
|
|
diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c
|
|
index 41f07b3e594e..d0c3e7817022 100644
|
|
--- a/arch/arc/kernel/setup.c
|
|
+++ b/arch/arc/kernel/setup.c
|
|
@@ -495,6 +495,8 @@ static inline bool uboot_arg_invalid(unsigned long addr)
|
|
/* We always pass 0 as magic from U-boot */
|
|
#define UBOOT_MAGIC_VALUE 0
|
|
|
|
+extern struct boot_param_header __image_dtb;
|
|
+
|
|
void __init handle_uboot_args(void)
|
|
{
|
|
bool use_embedded_dtb = true;
|
|
@@ -533,7 +535,7 @@ void __init handle_uboot_args(void)
|
|
ignore_uboot_args:
|
|
|
|
if (use_embedded_dtb) {
|
|
- machine_desc = setup_machine_fdt(__dtb_start);
|
|
+ machine_desc = setup_machine_fdt(&__image_dtb);
|
|
if (!machine_desc)
|
|
panic("Embedded DT invalid\n");
|
|
}
|
|
diff --git a/arch/arc/kernel/vmlinux.lds.S b/arch/arc/kernel/vmlinux.lds.S
|
|
index 529ae50f9fe2..ecdcd6842c0d 100644
|
|
--- a/arch/arc/kernel/vmlinux.lds.S
|
|
+++ b/arch/arc/kernel/vmlinux.lds.S
|
|
@@ -27,6 +27,19 @@ SECTIONS
|
|
|
|
. = CONFIG_LINUX_LINK_BASE;
|
|
|
|
+ /*
|
|
+ * In OpenWRT we want to patch built binary embedding .dtb of choice.
|
|
+ * This is implemented with "patch-dtb" utility which searches for
|
|
+ * "OWRTDTB:" string in first 16k of image and if it is found
|
|
+ * copies .dtb right after mentioned string.
|
|
+ *
|
|
+ * Note: "OWRTDTB:" won't be overwritten with .dtb, .dtb will follow it.
|
|
+ */
|
|
+ .owrt : {
|
|
+ *(.owrt)
|
|
+ . = ALIGN(PAGE_SIZE);
|
|
+ }
|
|
+
|
|
_int_vec_base_lds = .;
|
|
.vector : {
|
|
*(.vector)
|
|
--
|
|
2.17.1
|
|
|