uboot下ARMv8 lds

#include <config.h> #include <asm/psci.h>

OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64") OUTPUT_ARCH(aarch64) ENTRY(_start) SECTIONS { #ifdef CONFIG_ARMV8_SECURE_BASE  /DISCARD/ : { *(.rela._secure*) } #endif  . = 0x00000000;

 . = ALIGN(8);  .text :  {   *(.__image_copy_start)   CPUDIR/start.o (.text*)   *(.text*)  }

#ifdef CONFIG_ARMV8_PSCI  .__secure_start : #ifndef CONFIG_ARMV8_SECURE_BASE   ALIGN(CONSTANT(COMMONPAGESIZE)) #endif  {   KEEP(*(.__secure_start))  }

#ifndef CONFIG_ARMV8_SECURE_BASE #define CONFIG_ARMV8_SECURE_BASE #define __ARMV8_PSCI_STACK_IN_RAM #endif  .secure_text CONFIG_ARMV8_SECURE_BASE :   AT(ADDR(.__secure_start) + SIZEOF(.__secure_start))  {   *(._secure.text)  }

 .secure_data : AT(LOADADDR(.secure_text) + SIZEOF(.secure_text))  {   *(._secure.data)  }

 .secure_stack ALIGN(ADDR(.secure_data) + SIZEOF(.secure_data),        CONSTANT(COMMONPAGESIZE)) (NOLOAD) : #ifdef __ARMV8_PSCI_STACK_IN_RAM   AT(ADDR(.secure_stack)) #else   AT(LOADADDR(.secure_data) + SIZEOF(.secure_data)) #endif  {   KEEP(*(.__secure_stack_start))

  . = . + CONFIG_ARMV8_PSCI_NR_CPUS * ARM_PSCI_STACK_SIZE;

  . = ALIGN(CONSTANT(COMMONPAGESIZE));

  KEEP(*(.__secure_stack_end))  }

#ifndef __ARMV8_PSCI_STACK_IN_RAM  . = LOADADDR(.secure_stack); #endif

 .__secure_end : AT(ADDR(.__secure_end)) {   KEEP(*(.__secure_end))   LONG(0x1d1071c); /* Must output something to reset LMA */  } #endif

 . = ALIGN(8);  .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }

 . = ALIGN(8);  .data : {   *(.data*)  }

 . = ALIGN(8);

 . = .;

 . = ALIGN(8);  .u_boot_list : {   KEEP(*(SORT(.u_boot_list*)));  }

 . = ALIGN(8);

 .efi_runtime : {                 __efi_runtime_start = .;   *(efi_runtime_text)   *(efi_runtime_data)                 __efi_runtime_stop = .;  }

 .efi_runtime_rel : {                 __efi_runtime_rel_start = .;   *(.relaefi_runtime_text)   *(.relaefi_runtime_data)                 __efi_runtime_rel_stop = .;  }

 . = ALIGN(8);

 .image_copy_end :  {   *(.__image_copy_end)  }

 . = ALIGN(8);

 .rel_dyn_start :  {   *(.__rel_dyn_start)  }

 .rela.dyn : {   *(.rela*)  }

 .rel_dyn_end :  {   *(.__rel_dyn_end)  }

 _end = .;

 . = ALIGN(8);

 .bss_start : {   KEEP(*(.__bss_start));  }

 .bss : {   *(.bss*)    . = ALIGN(8);  }

 .bss_end : {   KEEP(*(.__bss_end));  }

 /DISCARD/ : { *(.dynsym) }  /DISCARD/ : { *(.dynstr*) }  /DISCARD/ : { *(.dynamic*) }  /DISCARD/ : { *(.plt*) }  /DISCARD/ : { *(.interp*) }  /DISCARD/ : { *(.gnu*) } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值