1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- MEMORY {
- /* 存储单元的物理地址 */
- SRAM : ORIGIN = 0x80000000, LENGTH = 2M
- }
- PROVIDE(_stext = 0x80000000);
- PROVIDE(_heap_size = 128K);
- PROVIDE(_hart_stack_size = 64K);
- PROVIDE(_max_hart_id = 7); /* todo */
- REGION_ALIAS("REGION_TEXT", SRAM);
- REGION_ALIAS("REGION_RODATA", SRAM);
- REGION_ALIAS("REGION_DATA", SRAM);
- REGION_ALIAS("REGION_BSS", SRAM);
- REGION_ALIAS("REGION_HEAP", SRAM);
- REGION_ALIAS("REGION_STACK", SRAM);
- OUTPUT_ARCH(riscv)
- ENTRY(_start)
- PROVIDE(_stack_start = ORIGIN(REGION_STACK) + LENGTH(REGION_STACK));
- SECTIONS
- {
- /* .text 字段 */
- .text _stext : {
- /* 把 entry 函数放在最前面 */
- *(.text.entry)
- /* 要链接的文件的 .text 字段集中放在这里 */
- *(.text .text.*)
- _etext = .;
- } > REGION_TEXT
- /* .rodata 字段 */
- .rodata : ALIGN(4) {
- _srodata = .;
- /* 要链接的文件的 .rodata 字段集中放在这里 */
- *(.rodata .rodata.*)
- . = ALIGN(4);
- _erodata = .;
- } > REGION_RODATA
- /* .data 字段 */
- .data : ALIGN(4) {
- _sidata = LOADADDR(.data);
- _sdata = .;
- /* Must be called __global_pointer$ for linker relaxations to work. */
- PROVIDE(__global_pointer$ = . + 0x800);
- /* 要链接的文件的 .data 字段集中放在这里 */
- *(.sdata .sdata.* .sdata2 .sdata2.*);
- *(.data .data.*)
- . = ALIGN(4);
- _edata = .;
- } > REGION_DATA
- /* .bss 字段 */
- .bss (NOLOAD) : {
- _sbss = .;
- /* 要链接的文件的 .bss 字段集中放在这里 */
- *(.sbss .bss .bss.*)
- . = ALIGN(4);
- _ebss = .;
- } > REGION_BSS
- .heap (NOLOAD) : {
- _sheap = .;
- . += _heap_size;
- . = ALIGN(4);
- _eheap = .;
- } > REGION_HEAP
- /* fictitious region that represents the memory available for the stack */
- .stack (NOLOAD) : {
- _estack = .;
- . = _stack_start;
- . = ALIGN(4);
- _sstack = .;
- } > REGION_STACK
- /* Discard .eh_frame, we are not doing unwind on panic so it is not needed */
- /DISCARD/ :
- {
- *(.eh_frame .eh_frame_hdr);
- }
- }
|