ldscript revision 1.1
11.133Spooka/*	$NetBSD: ldscript,v 1.1 2004/12/24 10:32:40 joff Exp $	*/
21.1Spooka
31.1SpookaOUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
41.64Spooka	      "elf32-littlearm")
51.1SpookaOUTPUT_ARCH(arm)
61.1SpookaENTRY(FLASH)
71.1SpookaMEMORY
81.1Spooka{
91.1Spooka  /* We will locate the .text section in flash, and will run directly
101.1Spooka     from there just long enough to relocate our .text and .data into
111.1Spooka     a small chunk of SDRAM starting at (SDRAM + 1M).  */
121.1Spooka  flash : o = 0x60660000, l = 1408K
131.1Spooka  sdram : o = 0x00100000, l = 1M	/* kernel loads at 0x00200000 */
141.1Spooka}
151.1SpookaSECTIONS
161.1Spooka{
171.1Spooka  FLASH = 0x60660000;
181.1Spooka
191.1Spooka  /* Read-only sections, merged into text segment: */
201.1Spooka  __text_store = FLASH;
211.1Spooka  .text      :
221.1Spooka  AT (FLASH)
231.1Spooka  {
241.1Spooka    *(.text)
251.1Spooka    *(.text.*)
261.1Spooka    *(.stub)
271.1Spooka    *(.glue_7t) *(.glue_7)
281.1Spooka    *(.rodata) *(.rodata.*)
291.1Spooka  } > sdram =0
301.1Spooka  PROVIDE (__etext = .);
311.1Spooka  PROVIDE (_etext = .);
321.1Spooka  PROVIDE (etext = .);
331.133Spooka  __data_store = FLASH + SIZEOF(.text);
341.1Spooka  .data    :
351.1Spooka  AT (LOADADDR(.text) + SIZEOF(.text))
361.130Spooka  {
371.41Spooka    __data_start = . ;
381.41Spooka    *(.data)
391.1Spooka    *(.data.*)
401.1Spooka  } > sdram
411.41Spooka  .sdata     : 
421.87Sad  AT (LOADADDR(.data) + SIZEOF(.data))
431.87Sad  {
441.45Spooka    *(.sdata) 
451.1Spooka    *(.sdata.*)
461.1Spooka    . = ALIGN(32 / 8);
471.1Spooka  } > sdram
481.1Spooka  _edata = .;
491.6Spooka  PROVIDE (edata = .);
501.1Spooka  __bss_start = .;
511.5Spooka  __bss_start__ = .;
521.5Spooka  .sbss      :
531.123Spooka  {
541.123Spooka    PROVIDE (__sbss_start = .);
551.123Spooka    PROVIDE (___sbss_start = .);
561.123Spooka    *(.dynsbss)
571.123Spooka    *(.sbss)
581.123Spooka    *(.sbss.*)
591.123Spooka    *(.scommon)
601.123Spooka    PROVIDE (__sbss_end = .);
611.123Spooka    PROVIDE (___sbss_end = .);
621.123Spooka  } > sdram
631.123Spooka  .bss       :
641.123Spooka  {
651.123Spooka   *(.dynbss)
661.123Spooka   *(.bss)
671.123Spooka   *(.bss.*)
681.123Spooka   *(COMMON)
691.123Spooka   /* Align here to ensure that the .bss section occupies space up to
701.123Spooka      _end.  Align after .bss to ensure correct alignment even if the
711.123Spooka      .bss section disappears because there are no input sections.  */
721.123Spooka   . = ALIGN(32 / 8);
731.123Spooka  } > sdram
741.123Spooka  . = ALIGN(32 / 8);
751.123Spooka  _end = .;
761.123Spooka  _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
771.123Spooka  PROVIDE (end = .);
781.123Spooka  .image   (FLASH + SIZEOF(.text) + SIZEOF(.data) + SIZEOF(.sdata)) :
791.123Spooka  AT (LOADADDR(.sdata) + SIZEOF(.sdata))
801.123Spooka  {
811.123Spooka    *(.image)
821.123Spooka  }
831.123Spooka}
841.123Spooka