Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) #include <asm-generic/vmlinux.lds.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) #include <asm/cache.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) #include <asm/page.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #include <asm/thread_info.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) OUTPUT_ARCH(arc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) ENTRY(res_service)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #ifdef CONFIG_CPU_BIG_ENDIAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) jiffies = jiffies_64 + 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) jiffies = jiffies_64;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) SECTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	 * ICCM starts at 0x8000_0000. So if kernel is relocated to some other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	 * address, make sure peripheral at 0x8z doesn't clash with ICCM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	 * Essentially vector is also in ICCM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	. = CONFIG_LINUX_LINK_BASE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	_int_vec_base_lds = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	.vector : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 		*(.vector)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 		. = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #ifdef CONFIG_ARC_HAS_ICCM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	.text.arcfp : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 		*(.text.arcfp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 		. = ALIGN(CONFIG_ARC_ICCM_SZ * 1024);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	 * The reason for having a seperate subsection .init.ramfs is to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	 * prevent objump from including it in kernel dumps
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	 * Reason for having .init.ramfs above .init is to make sure that the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	 * binary blob is tucked away to one side, reducing the displacement
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	 * between .init.text and .text, avoiding any possible relocation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	 * errors because of calls from .init.text to .text
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	 * Yes such calls do exist. e.g.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	 *	decompress_inflate.c:gunzip( ) -> zlib_inflate_workspace( )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	__init_begin = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	.init.ramfs : { INIT_RAM_FS }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	. = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	_stext = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	HEAD_TEXT_SECTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	INIT_TEXT_SECTION(L1_CACHE_BYTES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	.init.data : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 		INIT_DATA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 		INIT_SETUP(L1_CACHE_BYTES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 		INIT_CALLS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 		CON_INITCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	.init.arch.info : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 		__arch_info_begin = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 		*(.arch.info.init)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 		__arch_info_end = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	PERCPU_SECTION(L1_CACHE_BYTES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	. = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	__init_end = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	.text : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 		_text = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 		TEXT_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		SCHED_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 		CPUIDLE_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 		LOCK_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		KPROBES_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 		IRQENTRY_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 		SOFTIRQENTRY_TEXT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 		*(.fixup)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 		*(.gnu.warning)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	EXCEPTION_TABLE(L1_CACHE_BYTES)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	_etext = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	_sdata = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	RO_DATA(PAGE_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	 * 1. this is .data essentially
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	 * 2. THREAD_SIZE for init.task, must be kernel-stk sz aligned
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	_edata = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	BSS_SECTION(4, 4, 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) #ifdef CONFIG_ARC_DW2_UNWIND
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	. = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	.eh_frame  : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 		__start_unwind = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 		*(.eh_frame)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 		__end_unwind = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	/DISCARD/ : {	*(.eh_frame) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	. = ALIGN(PAGE_SIZE);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	_end = . ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	STABS_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	ELF_DETAILS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	DISCARDS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	.arcextmap 0 : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 		*(.gnu.linkonce.arcextmap.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 		*(.arcextmap.*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #ifndef CONFIG_DEBUG_INFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	/DISCARD/ : { *(.debug_frame) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	/DISCARD/ : { *(.debug_aranges) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	/DISCARD/ : { *(.debug_pubnames) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	/DISCARD/ : { *(.debug_info) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	/DISCARD/ : { *(.debug_abbrev) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	/DISCARD/ : { *(.debug_line) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	/DISCARD/ : { *(.debug_str) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	/DISCARD/ : { *(.debug_loc) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	/DISCARD/ : { *(.debug_macinfo) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	/DISCARD/ : { *(.debug_ranges) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) #ifdef CONFIG_ARC_HAS_DCCM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	. = CONFIG_ARC_DCCM_BASE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	__arc_dccm_base = .;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	.data.arcfp : {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 		*(.data.arcfp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	. = ALIGN(CONFIG_ARC_DCCM_SZ * 1024);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) }