|
@@ -1,5 +1,7 @@
|
|
|
-From: Alexey Brodkin <[email protected]>
|
|
|
-Subject: openwrt: arc - add OWRTDTB section
|
|
|
+From 34ef04f3845ed2b47d57dd9d3b795b16e1f8185a Mon Sep 17 00:00:00 2001
|
|
|
+From: Evgeniy Didin <[email protected]>
|
|
|
+Date: Fri, 15 Mar 2019 18:53:38 +0300
|
|
|
+Subject: [PATCH] arc add OWRTDTB section
|
|
|
|
|
|
This change allows OpenWRT to patch resulting kernel binary with
|
|
|
external .dtb.
|
|
@@ -10,7 +12,9 @@ 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 <[email protected]>
|
|
|
Signed-off-by: Alexey Brodkin <[email protected]>
|
|
|
+Signed-off-by: Evgeniy Didin <[email protected]>
|
|
|
---
|
|
|
arch/arc/kernel/head.S | 10 ++++++++++
|
|
|
arch/arc/kernel/setup.c | 4 +++-
|
|
@@ -23,14 +27,14 @@ Signed-off-by: Alexey Brodkin <[email protected]>
|
|
|
#endif
|
|
|
.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.
|
|
|
++ ; 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:"
|
|
|
++ .ascii "OWRTDTB:"
|
|
|
+ENTRY(__image_dtb)
|
|
|
-+ .fill 0x4000
|
|
|
++ .fill 0x4000
|
|
|
+END(__image_dtb)
|
|
|
+
|
|
|
.section .init.text, "ax",@progbits
|
|
@@ -38,7 +42,16 @@ Signed-off-by: Alexey Brodkin <[email protected]>
|
|
|
;----------------------------------------------------------------
|
|
|
--- a/arch/arc/kernel/setup.c
|
|
|
+++ b/arch/arc/kernel/setup.c
|
|
|
-@@ -469,7 +469,7 @@ ignore_uboot_args:
|
|
|
+@@ -434,6 +434,8 @@ static inline bool uboot_arg_invalid(uns
|
|
|
+ #define UBOOT_TAG_CMDLINE 1
|
|
|
+ #define UBOOT_TAG_DTB 2
|
|
|
+
|
|
|
++extern struct boot_param_header __image_dtb;
|
|
|
++
|
|
|
+ void __init handle_uboot_args(void)
|
|
|
+ {
|
|
|
+ bool use_embedded_dtb = true;
|
|
|
+@@ -469,7 +471,7 @@ ignore_uboot_args:
|
|
|
#endif
|
|
|
|
|
|
if (use_embedded_dtb) {
|
|
@@ -47,34 +60,25 @@ Signed-off-by: Alexey Brodkin <[email protected]>
|
|
|
if (!machine_desc)
|
|
|
panic("Embedded DT invalid\n");
|
|
|
}
|
|
|
-@@ -485,6 +485,8 @@ ignore_uboot_args:
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-+extern struct boot_param_header __image_dtb;
|
|
|
-+
|
|
|
- void __init setup_arch(char **cmdline_p)
|
|
|
- {
|
|
|
- handle_uboot_args();
|
|
|
--- a/arch/arc/kernel/vmlinux.lds.S
|
|
|
+++ b/arch/arc/kernel/vmlinux.lds.S
|
|
|
-@@ -30,6 +30,19 @@ SECTIONS
|
|
|
+@@ -29,6 +29,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 : {
|
|
|
++ * 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);
|
|
|
++ . = ALIGN(PAGE_SIZE);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
_int_vec_base_lds = .;
|
|
|
.vector : {
|
|
|
- *(.vector)
|