18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * realmode.lds.S
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Linker script for the real-mode code
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#include <asm/page_types.h>
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#undef i386
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciOUTPUT_FORMAT("elf32-i386")
138c2ecf20Sopenharmony_ciOUTPUT_ARCH(i386)
148c2ecf20Sopenharmony_ciENTRY(pa_text_start)
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciSECTIONS
178c2ecf20Sopenharmony_ci{
188c2ecf20Sopenharmony_ci	real_mode_seg = 0;
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci	. = 0;
218c2ecf20Sopenharmony_ci	.header : {
228c2ecf20Sopenharmony_ci		pa_real_mode_base = .;
238c2ecf20Sopenharmony_ci		*(.header)
248c2ecf20Sopenharmony_ci	}
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci	. = ALIGN(4);
278c2ecf20Sopenharmony_ci	.rodata : {
288c2ecf20Sopenharmony_ci		*(.rodata)
298c2ecf20Sopenharmony_ci		*(.rodata.*)
308c2ecf20Sopenharmony_ci		. = ALIGN(16);
318c2ecf20Sopenharmony_ci		video_cards = .;
328c2ecf20Sopenharmony_ci		*(.videocards)
338c2ecf20Sopenharmony_ci		video_cards_end = .;
348c2ecf20Sopenharmony_ci	}
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci	. = ALIGN(PAGE_SIZE);
378c2ecf20Sopenharmony_ci	pa_text_start = .;
388c2ecf20Sopenharmony_ci	.text : {
398c2ecf20Sopenharmony_ci		*(.text)
408c2ecf20Sopenharmony_ci		*(.text.*)
418c2ecf20Sopenharmony_ci	}
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci	.text32 : {
448c2ecf20Sopenharmony_ci		*(.text32)
458c2ecf20Sopenharmony_ci		*(.text32.*)
468c2ecf20Sopenharmony_ci	}
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci	.text64 : {
498c2ecf20Sopenharmony_ci		*(.text64)
508c2ecf20Sopenharmony_ci		*(.text64.*)
518c2ecf20Sopenharmony_ci	}
528c2ecf20Sopenharmony_ci	pa_ro_end = .;
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	. = ALIGN(PAGE_SIZE);
558c2ecf20Sopenharmony_ci	.data : {
568c2ecf20Sopenharmony_ci		*(.data)
578c2ecf20Sopenharmony_ci		*(.data.*)
588c2ecf20Sopenharmony_ci	}
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci	. = ALIGN(128);
618c2ecf20Sopenharmony_ci	.bss : {
628c2ecf20Sopenharmony_ci		*(.bss*)
638c2ecf20Sopenharmony_ci	}
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci	/* End signature for integrity checking */
668c2ecf20Sopenharmony_ci	. = ALIGN(4);
678c2ecf20Sopenharmony_ci	.signature : {
688c2ecf20Sopenharmony_ci		*(.signature)
698c2ecf20Sopenharmony_ci	}
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci	/DISCARD/ : {
728c2ecf20Sopenharmony_ci		*(.note*)
738c2ecf20Sopenharmony_ci		*(.debug*)
748c2ecf20Sopenharmony_ci	}
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci#include "pasyms.h"
778c2ecf20Sopenharmony_ci}
78