| 
									
										
										
										
											2024-09-28 14:24:04 +08:00
										 |  |  | OUTPUT_ARCH( "riscv" ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENTRY( _start ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MEMORY | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   flash (rxai!w) : ORIGIN = 0x04000000, LENGTH = 1680K | 
					
						
							|  |  |  |   dram (wxa!ri) : ORIGIN = 0x021A4000, LENGTH = 6512K | 
					
						
							|  |  |  |   iram (wxa!ri) : ORIGIN = 0x00fc8000, LENGTH = 32K | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SECTIONS | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   __main_stack_size = DEFINED(__main_stack_size) ? __main_stack_size : 2K; | 
					
						
							|  |  |  |   __trap_stack_size = DEFINED(__trap_stack_size) ? __trap_stack_size : 2K; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .init           : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     KEEP (*(SORT_NONE(.init))) | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .text           : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.text .text.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.t.*) | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .fini           : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     KEEP (*(SORT_NONE(.fini))) | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   PROVIDE (__etext = .); | 
					
						
							|  |  |  |   PROVIDE (_etext = .); | 
					
						
							|  |  |  |   PROVIDE (etext = .); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .rodata         : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.rdata) | 
					
						
							|  |  |  |     *(.rodata .rodata.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.r.*) | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(4); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .preinit_array  : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     PROVIDE_HIDDEN (__preinit_array_start = .); | 
					
						
							|  |  |  |     KEEP (*(.preinit_array)) | 
					
						
							|  |  |  |     PROVIDE_HIDDEN (__preinit_array_end = .); | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .init_array     : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     PROVIDE_HIDDEN (__init_array_start = .); | 
					
						
							|  |  |  |     KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) | 
					
						
							|  |  |  |     KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) | 
					
						
							|  |  |  |     PROVIDE_HIDDEN (__init_array_end = .); | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .fini_array     : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     PROVIDE_HIDDEN (__fini_array_start = .); | 
					
						
							|  |  |  |     KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) | 
					
						
							|  |  |  |     KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) | 
					
						
							|  |  |  |     PROVIDE_HIDDEN (__fini_array_end = .); | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .ctors          : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     /* gcc uses crtbegin.o to find the start of | 
					
						
							|  |  |  |        the constructors, so we make sure it is | 
					
						
							|  |  |  |        first.  Because this is a wildcard, it | 
					
						
							|  |  |  |        doesn't matter if the user does not | 
					
						
							|  |  |  |        actually link against crtbegin.o; the | 
					
						
							|  |  |  |        linker won't look for a file to match a | 
					
						
							|  |  |  |        wildcard.  The wildcard also means that it | 
					
						
							|  |  |  |        doesn't matter which directory crtbegin.o | 
					
						
							|  |  |  |        is in.  */ | 
					
						
							|  |  |  |     KEEP (*crtbegin.o(.ctors)) | 
					
						
							|  |  |  |     KEEP (*crtbegin?.o(.ctors)) | 
					
						
							|  |  |  |     /* We don't want to include the .ctor section from | 
					
						
							|  |  |  |        the crtend.o file until after the sorted ctors. | 
					
						
							|  |  |  |        The .ctor section from the crtend file contains the | 
					
						
							|  |  |  |        end of ctors marker and it must be last */ | 
					
						
							|  |  |  |     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) | 
					
						
							|  |  |  |     KEEP (*(SORT(.ctors.*))) | 
					
						
							|  |  |  |     KEEP (*(.ctors)) | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .dtors          : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     KEEP (*crtbegin.o(.dtors)) | 
					
						
							|  |  |  |     KEEP (*crtbegin?.o(.dtors)) | 
					
						
							|  |  |  |     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) | 
					
						
							|  |  |  |     KEEP (*(SORT(.dtors.*))) | 
					
						
							|  |  |  |     KEEP (*(.dtors)) | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .lalign         : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     PROVIDE( _data_lma = . ); | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .dalign         : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     PROVIDE( _data = . ); | 
					
						
							|  |  |  |   } >dram AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .data          : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.data .data.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.d.*) | 
					
						
							|  |  |  |     *(.srodata.cst16) | 
					
						
							|  |  |  |     *(.srodata.cst8) | 
					
						
							|  |  |  |     *(.srodata.cst4) | 
					
						
							|  |  |  |     *(.srodata.cst2) | 
					
						
							|  |  |  |     *(.srodata .srodata.*) | 
					
						
							|  |  |  |     *(.sdata .sdata.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.s.*) | 
					
						
							|  |  |  |   } >dram AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(4); | 
					
						
							|  |  |  |   PROVIDE( _edata = . ); | 
					
						
							|  |  |  |   PROVIDE( edata = . ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   PROVIDE( _fbss = . ); | 
					
						
							|  |  |  |   PROVIDE( __bss_start = . ); | 
					
						
							|  |  |  |   .bss            : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     *(.sbss*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.sb.*) | 
					
						
							|  |  |  |     *(.bss .bss.*) | 
					
						
							|  |  |  |     *(.gnu.linkonce.b.*) | 
					
						
							|  |  |  |     *(COMMON) | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |   } >dram | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   . = ALIGN(8); | 
					
						
							|  |  |  |   PROVIDE( _end = . ); | 
					
						
							|  |  |  |   PROVIDE( end = . ); | 
					
						
							|  |  |  |   PROVIDE( _heap_start = . ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .stack ORIGIN(dram) + LENGTH(dram) - (__main_stack_size + __trap_stack_size) : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     PROVIDE( _heap_end = . ); | 
					
						
							|  |  |  |     . = __main_stack_size; | 
					
						
							|  |  |  |     PROVIDE( _sp = . ); | 
					
						
							|  |  |  |     . = __trap_stack_size; | 
					
						
							|  |  |  |     PROVIDE( _trap_sp = . ); | 
					
						
							|  |  |  |   } >dram | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  .ilalign         : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     PROVIDE( _iram_lma = . ); | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .iram         : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     PROVIDE( _iram_start = . ); | 
					
						
							|  |  |  |     *(.iram.entry*); | 
					
						
							|  |  |  |     *(.iram*); | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     PROVIDE( _iram_end = . ); | 
					
						
							|  |  |  |   } >iram AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .ilalign1        : | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     . = ALIGN(4); | 
					
						
							|  |  |  |     PROVIDE( _flash_end = . ); | 
					
						
							|  |  |  |   } >flash AT>flash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | INCLUDE "sp_cco.addrs.ld" | 
					
						
							| 
									
										
										
										
											2024-11-03 11:23:24 +08:00
										 |  |  | INCLUDE "rom.addrs.ld" | 
					
						
							|  |  |  | INCLUDE "sbl.addrs.ld" |