^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Real-mode blob header; this should match realmode.h and be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * readonly; for mutable data instead add pointers into the .data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * or .bss sections as appropriate.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <asm/page_types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/segment.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "realmode.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) .section ".header", "a"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) .balign 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) SYM_DATA_START(real_mode_header)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) .long pa_text_start
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) .long pa_ro_end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /* SMP trampoline */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) .long pa_trampoline_start
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) .long pa_trampoline_header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #ifdef CONFIG_AMD_MEM_ENCRYPT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) .long pa_sev_es_trampoline_start
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #ifdef CONFIG_X86_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) .long pa_trampoline_pgd;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) /* ACPI S3 wakeup */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #ifdef CONFIG_ACPI_SLEEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) .long pa_wakeup_start
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) .long pa_wakeup_header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /* APM/BIOS reboot */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) .long pa_machine_real_restart_asm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #ifdef CONFIG_X86_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .long __KERNEL32_CS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) SYM_DATA_END(real_mode_header)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) /* End signature, used to verify integrity */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) .section ".signature","a"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) .balign 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) SYM_DATA(end_signature, .long REALMODE_END_SIGNATURE)