#include <linux/config.h>

OUTPUT_FORMAT("elf64-alpha")
ENTRY(__start)
PHDRS { kernel PT_LOAD ; }
jiffies = jiffies_64;
SECTIONS
{
#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS
  . = 0xfffffc0000310000;
#else
  . = 0xfffffc0000810000;
#endif

  .text : {
	_text = .;
	*(.text)
	_etext = .;
  } :kernel

  /* Exception table */
  __ex_table ALIGN(16) : {
	__start___ex_table = .;
	*(__ex_table)
	__stop___ex_table = .;
  }

  /* Kernel symbol table */
  __ksymtab ALIGN(8) : {
	__start___ksymtab = .;
	*(__ksymtab)
	__stop___ksymtab = .;
  }
  .kstrtab : { *(.kstrtab) }

  /* Startup code */
  .text.init ALIGN(8192) : {
	__init_begin = .;
	*(.text.init)
  }
  .data.init : { *(.data.init) }

  .setup.init ALIGN(16): {
	__setup_start = .;
	*(.setup.init)
	__setup_end = .;
  }

  .initcall.init ALIGN(8): {
	__initcall_start = .;
	*(.initcall1.init) 
	*(.initcall2.init) 
	*(.initcall3.init) 
	*(.initcall4.init) 
	*(.initcall5.init) 
	*(.initcall6.init) 
	*(.initcall7.init)
	__initcall_end = .;
  }

  . = ALIGN(64);
  __per_cpu_start = .;
  .data.percpu  : { *(.data.percpu) }
  __per_cpu_end = .;

  /* The initial task and kernel stack */
  .data.init_thread ALIGN(2*8192) : {
	__init_end = .;
	*(.data.init_thread)
  }

  /* Global data */
  .data.cacheline_aligned : {
	_data = .;
	*(.data.cacheline_aligned)
  }
  .rodata : { *(.rodata) *(.rodata.*) }
  .data : { *(.data) CONSTRUCTORS }
  .got : { *(.got) }
  .sdata : {
	*(.sdata)
	_edata = .;
  }

  .sbss : {
	__bss_start = .;
	*(.sbss) *(.scommon)
  }
  .bss : {
	*(.bss) *(COMMON)
	__bss_stop = .;
	_end = .;
  }

  .mdebug 0 : { *(.mdebug) }
  .note 0 : { *(.note) }
  .comment 0 : { *(.comment) }

  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }

  /DISCARD/ : { *(.text.exit) *(.data.exit) *(.exitcall.exit) }
}
