ENTRY(_start)

KERNEL_ADDR_OFFSET = 0xC0000000;

SECTIONS {
	. = 1M;
	KERNEL_PHYSADDR_START = .;

	.rodata.boot : {
		*(.rodata.boot)
	}

	.text.boot : {
		*(.text.boot)
	}

	. = KERNEL_ADDR_OFFSET;
	KERNEL_VADDR_START = .;

	.text ALIGN(4K) : AT (ADDR(.text) - KERNEL_ADDR_OFFSET) {
		*(.text)
	}

	.rodata ALIGN(4K) : AT (ADDR(.rodata) - KERNEL_ADDR_OFFSET) {
		*(.rodata)
	}

	.data ALIGN(4K) : AT (ADDR(.data) - KERNEL_ADDR_OFFSET) {
		*(.data)
	}

	.bss ALIGN(4K) : AT (ADDR(.bss) - KERNEL_ADDR_OFFSET) {
		*(COMMON)
		*(.bss)
	}

	.bss.stack ALIGN(4K) : AT (ADDR(.bss.stack) - KERNEL_ADDR_OFFSET) {
		*(.bss.stack)
        KERNEL_STACK_END = .;
    }

	KERNEL_VADDR_END = .;
	KERNEL_PHYSADDR_END = . - KERNEL_ADDR_OFFSET;

}