ENTRY(__rv64_entry); KERNEL_PHYS_BASE = 0x80200000; KERNEL_VIRT_OFFSET = 0xFFFFFFF000000000; SECTIONS { . = KERNEL_PHYS_BASE; PROVIDE(__kernel_start = . + KERNEL_VIRT_OFFSET); .text.entry : { *(.text.entry) } . = ALIGN(16); . = . + KERNEL_VIRT_OFFSET; .text : AT(. - KERNEL_VIRT_OFFSET) { KEEP(*(.text.vectors)); *(.text*) } . = ALIGN(4K); .rodata : AT(. - KERNEL_VIRT_OFFSET) { *(.rodata*) *(.eh_frame*) } . = ALIGN(4K); .data.tables : AT (. - KERNEL_VIRT_OFFSET) { KEEP(*(.data.tables)) } . = ALIGN(4K); .data : AT(. - KERNEL_VIRT_OFFSET) { *(.data*) . = ALIGN(8); /* PROVIDE(__global_pointer = . + 0x800 - KERNEL_VIRT_OFFSET); */ . = ALIGN(16); PROVIDE(__init_array_start = .); KEEP(*(.init_array*)) PROVIDE(__init_array_end = .); *(.got*) } . = ALIGN(4K); PROVIDE(__bss_start_phys = . - KERNEL_VIRT_OFFSET); .bss : AT(. - KERNEL_VIRT_OFFSET) { *(COMMON) *(.bss*) } . = ALIGN(4K); PROVIDE(__bss_end_phys = . - KERNEL_VIRT_OFFSET); PROVIDE(__bss_size = __bss_end_phys - __bss_start_phys); PROVIDE(__kernel_end = .); };