ax-runtime 0.6.0

Runtime library of ArceOS
INCLUDE "axplat.x"

SECTIONS {
    .init_array : AT(ADDR(.init_array) - AX_LINKER_LOAD_OFFSET) ALIGN(0x10) {
        __init_array_start = .;
        KEEP(*(.init_array .init_array.*))
        __init_array_end = .;
    }

    .runtime : AT(ADDR(.runtime) - AX_LINKER_LOAD_OFFSET) ALIGN(0x10) {
        __sdriver_register = .;
        KEEP(*(.driver.register*))
        __edriver_register = .;

        . = ALIGN(0x10);
        _ex_table_start = .;
        KEEP(*(__ex_table))
        _ex_table_end = .;
    }

    scope_local : AT(ADDR(scope_local) - AX_LINKER_LOAD_OFFSET) {
        KEEP(*(scope_local))
    }

    %DWARF%
}
INSERT AFTER .rodata;

PROVIDE(_sbss = __bss_start);
PROVIDE(_ebss = __bss_stop);
PROVIDE(boot_stack = __cpu0_stack);
PROVIDE(boot_stack_top = __cpu0_stack_top);
PROVIDE(_percpu_load_start = __percpu_start);
PROVIDE(_percpu_load_end = __percpu_end);
PROVIDE(_percpu_start = __percpu_start);
PROVIDE(_percpu_end = __percpu_end);
PROVIDE(_skernel = VM_LOAD_ADDRESS);
PROVIDE(_ekernel = __kernel_code_end);