/* SPDX-License-Identifier: GPL-2.0+ */ /* * tashaboot arm64 memory layout. one segment, loaded at the bottom of * RAM, right where qemu -kernel drops a raw image on virt. * * Copyright (C) 2026 Bradley Morgan */ OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64") OUTPUT_ARCH(aarch64) ENTRY(_start) SECTIONS { . = 0x40000000; __image_copy_start = .; _text_start = .; .text : { arch/arm64/kernel/start.o (.text.boot) *(.text.boot) *(.text*) } . = ALIGN(8); __text_end = .; .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } . = ALIGN(8); __rodata_end = .; .data : { *(.data*) } . = ALIGN(8); __image_end = .; __bss_start = .; .bss : { *(.bss*) *(COMMON) } . = ALIGN(8); __bss_end = .; /* * the stack lives in its own region, clear of bss. page tables * and buffers are bss objects, a stack sharing their address * space grows down into them and the first deep call crushes * whatever it meets. */ . = ALIGN(4096); __stack_bottom = .; . += 0x4000; __stack_top = .; __image_copy_end = .; /DISCARD/ : { *(.dynsym) } /DISCARD/ : { *(.dynstr*) } /DISCARD/ : { *(.dynamic*) } /DISCARD/ : { *(.plt*) } /DISCARD/ : { *(.interp*) } /DISCARD/ : { *(.gnu*) } /DISCARD/ : { *(.ARM.attributes) } /DISCARD/ : { *(.comment) } /DISCARD/ : { *(.note*) } /DISCARD/ : { *(.eh_frame*) } }