xref: /kvm-unit-tests/s390x/snippets/c/flat.lds.S (revision 9801dbbe9ea4591b2c32a51e5b29cb64502b93fb)
18e9fbb64SMarc Hartmayer#include <asm/asm-offsets.h>
28e9fbb64SMarc Hartmayer
3*9801dbbeSNicholas PigginPHDRS
4*9801dbbeSNicholas Piggin{
5*9801dbbeSNicholas Piggin    text PT_LOAD FLAGS(5);
6*9801dbbeSNicholas Piggin    data PT_LOAD FLAGS(6);
7*9801dbbeSNicholas Piggin}
8*9801dbbeSNicholas Piggin
9acc93cbfSJanosch FrankSECTIONS
10acc93cbfSJanosch Frank{
11acc93cbfSJanosch Frank	.lowcore : {
12acc93cbfSJanosch Frank		/*
13acc93cbfSJanosch Frank		 * Initial short psw for disk boot, with 31 bit addressing for
14acc93cbfSJanosch Frank		 * non z/Arch environment compatibility and the instruction
15acc93cbfSJanosch Frank		 * address 0x4000 (cstart.S .init).
16acc93cbfSJanosch Frank		 */
17acc93cbfSJanosch Frank		. = 0;
18cd719531SJanis Schoetterl-Glausch		lowcore = .;
19acc93cbfSJanosch Frank		 LONG(0x00080000)
20acc93cbfSJanosch Frank		 LONG(0x80004000)
21acc93cbfSJanosch Frank		 /* Restart new PSW for booting via PSW restart. */
22acc93cbfSJanosch Frank		 . = 0x1a0;
23acc93cbfSJanosch Frank		 QUAD(0x0000000180000000)
24acc93cbfSJanosch Frank		 QUAD(0x0000000000004000)
25acc93cbfSJanosch Frank	}
26acc93cbfSJanosch Frank	. = 0x4000;
27b7909c92SJanosch Frank	/*
28b7909c92SJanosch Frank	 * The stack grows down from 0x4000 to 0x2000, we pre-allocoate
298e9fbb64SMarc Hartmayer	 * a frame via the -STACK_FRAME_SIZE.
30b7909c92SJanosch Frank	 */
318e9fbb64SMarc Hartmayer	stackptr = . - STACK_FRAME_SIZE;
32a6c15401SJanosch Frank	stacktop = .;
33b7909c92SJanosch Frank	/* Start text 0x4000 */
34acc93cbfSJanosch Frank	.text : {
35acc93cbfSJanosch Frank		*(.init)
36acc93cbfSJanosch Frank		*(.text)
37acc93cbfSJanosch Frank		*(.text.*)
38*9801dbbeSNicholas Piggin	} :text
39b7909c92SJanosch Frank	. = ALIGN(4K);
40acc93cbfSJanosch Frank	etext = .;
41b7909c92SJanosch Frank	/* End text */
42b7909c92SJanosch Frank	/* Start data */
43acc93cbfSJanosch Frank	.data : {
44acc93cbfSJanosch Frank		*(.data)
45acc93cbfSJanosch Frank		*(.data.rel*)
46*9801dbbeSNicholas Piggin	} :data
47acc93cbfSJanosch Frank	. = ALIGN(16);
48*9801dbbeSNicholas Piggin	.rodata : { *(.rodata) *(.rodata.*) } :data
49acc93cbfSJanosch Frank	. = ALIGN(16);
50acc93cbfSJanosch Frank	.bss : { *(.bss) }
51b7909c92SJanosch Frank	/* End data */
52acc93cbfSJanosch Frank}
53