mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 0843a61d6913bdac8889eb048ed89f7903059787 Mon Sep 17 00:00:00 2001
 | |
| From: Robert Marko <robimarko@gmail.com>
 | |
| Date: Fri, 30 Oct 2020 13:36:31 +0100
 | |
| Subject: [PATCH] arm: compressed: add appended DTB section
 | |
| 
 | |
| This adds a appended_dtb section to the ARM decompressor
 | |
| linker script.
 | |
| 
 | |
| This allows using the existing ARM zImage appended DTB support for
 | |
| appending a DTB to the raw ELF kernel.
 | |
| 
 | |
| Its size is set to 1MB max to match the zImage appended DTB size limit.
 | |
| 
 | |
| To use it to pass the DTB to the kernel, objcopy is used:
 | |
| 
 | |
| objcopy --set-section-flags=.appended_dtb=alloc,contents \
 | |
| 	--update-section=.appended_dtb=<target>.dtb vmlinux
 | |
| 
 | |
| This is based off the following patch:
 | |
| https://github.com/openwrt/openwrt/commit/c063e27e02a9dcac0e7f5877fb154e58fa3e1a69
 | |
| 
 | |
| Signed-off-by: Robert Marko <robimarko@gmail.com>
 | |
| ---
 | |
|  arch/arm/boot/compressed/vmlinux.lds.S | 9 ++++++++-
 | |
|  1 file changed, 8 insertions(+), 1 deletion(-)
 | |
| 
 | |
| --- a/arch/arm/boot/compressed/vmlinux.lds.S
 | |
| +++ b/arch/arm/boot/compressed/vmlinux.lds.S
 | |
| @@ -103,6 +103,13 @@ SECTIONS
 | |
|  
 | |
|    _edata = .;
 | |
|  
 | |
| +  .appended_dtb : {
 | |
| +    /* leave space for appended DTB */
 | |
| +    . += 0x100000;
 | |
| +  }
 | |
| +
 | |
| +  _edata_dtb = .;
 | |
| +
 | |
|    /*
 | |
|     * The image_end section appears after any additional loadable sections
 | |
|     * that the linker may decide to insert in the binary image.  Having
 | |
| @@ -140,4 +147,4 @@ SECTIONS
 | |
|  
 | |
|    ARM_ASSERTS
 | |
|  }
 | |
| -ASSERT(_edata_real == _edata, "error: zImage file size is incorrect");
 | |
| +ASSERT(_edata_real == _edata_dtb, "error: zImage file size is incorrect");
 |