2023-11-16 23:19:36 -05:00

247 lines
7.4 KiB
Plaintext

/* SPDX-License-Identifier: GPL-2.0 */
/* CONFIG_CC_VERSION_TEXT (Do not delete this comment. See help in Kconfig) */
/*
*
* Automatically generated file; DO NOT EDIT.
* Linux/x86 5.11.6 Kernel Configuration
*
*/
/*
* The use of "&&" / "||" is limited in certain expressions.
* The following enable to calculate "and" / "or" with macro expansion only.
*/
/*
* Helper macros to use CONFIG_ options in C/CPP expressions. Note that
* these only work with boolean and tristate options.
*/
/*
* Getting something that works in C and CPP for an arg that may or may
* not be defined is tricky. Here, if we have "#define CONFIG_BOOGER 1"
* we match on the placeholder define, insert the "0," for arg1 and generate
* the triplet (0, 1, 0). Then the last step cherry picks the 2nd arg (a one).
* When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
* the last step cherry picks the 2nd arg, we get a zero.
*/
/*
* IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0
* otherwise. For boolean options, this is equivalent to
* IS_ENABLED(CONFIG_FOO).
*/
/*
* IS_MODULE(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'm', 0
* otherwise.
*/
/*
* IS_REACHABLE(CONFIG_FOO) evaluates to 1 if the currently compiled
* code can call a function defined in code compiled based on CONFIG_FOO.
* This is similar to IS_ENABLED(), but returns false when invoked from
* built-in code when CONFIG_FOO is set to 'm'.
*/
/*
* IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',
* 0 otherwise.
*/
/* SPDX-License-Identifier: GPL-2.0 */
/*
* realmode.lds.S
*
* Linker script for the real-mode code
*/
/* SPDX-License-Identifier: GPL-2.0 */
/* SPDX-License-Identifier: GPL-2.0 */
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* const.h: Macros for dealing with constants. */
/* Some constant macros are used in both assembler and
* C code. Therefore we cannot annotate them always with
* 'UL' and other type specifiers unilaterally. We
* use the following macros to deal with this.
*
* Similarly, _AT() will cast an expression with a type in C, but
* leave it unchanged in asm.
*/
/* SPDX-License-Identifier: GPL-2.0 */
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* int-ll64 is used everywhere now.
*/
/* SPDX-License-Identifier: GPL-2.0 */
/*
* asm-generic/int-ll64.h
*
* Integer declarations for architectures which use "long long"
* for 64-bit types.
*/
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* asm-generic/int-ll64.h
*
* Integer declarations for architectures which use "long long"
* for 64-bit types.
*/
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/* SPDX-License-Identifier: GPL-2.0 */
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
* There seems to be no way of detecting this automatically from user
* space, so 64 bit architectures should override this in their
* bitsperlong.h. In particular, an architecture that supports
* both 32 and 64 bit user space must not rely on CONFIG_64BIT
* to decide it, but rather check a compiler provided macro.
*/
/*
* FIXME: The check currently breaks x86-64 build, so it's
* temporarily disabled. Please fix x86-64 and reenable
*/
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* AMD Memory Encryption Support
*
* Copyright (C) 2016 Advanced Micro Devices, Inc.
*
* Author: Tom Lendacky <thomas.lendacky@amd.com>
*/
/* PAGE_SHIFT determines the page size */
/* Cast *PAGE_MASK to a signed type so that it is sign-extended if
virtual addresses are 32-bits but physical addresses are larger
(ie, 32-bit PAE). */
/* SPDX-License-Identifier: GPL-2.0 */
/*
* The index for the tss.ist[] array. The hardware limit is 7 entries.
*/
/*
* Set __PAGE_OFFSET to the most negative possible address +
* PGDIR_SIZE*17 (pgd slot 273).
*
* The gap is to allow a space for LDT remap for PTI (1 pgd slot) and space for
* a hypervisor (16 slots). Choosing 16 slots for a hypervisor is arbitrary,
* but it's what Xen requires.
*/
/* See Documentation/x86/x86_64/mm.rst for a description of the memory map. */
/*
* User space process size. This is the first address outside the user range.
* There are a few constraints that determine this:
*
* On Intel CPUs, if a SYSCALL instruction is at the highest canonical
* address, then that syscall will enter the kernel with a
* non-canonical return address, and SYSRET will explode dangerously.
* We avoid this particular problem by preventing anything executable
* from being mapped at the maximum canonical address.
*
* On AMD CPUs in the Ryzen family, there's a nasty bug in which the
* CPUs malfunction if they execute code from the highest canonical page.
* They'll speculate right off the end of the canonical space, and
* bad things happen. This is worked around in the same way as the
* Intel problem.
*
* With page table isolation enabled, we map the LDT in ... [stay tuned]
*/
/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
*/
/*
* In spite of the name, KERNEL_IMAGE_SIZE is a limit on the maximum virtual
* address for the kernel image, rather than the limit on the size itself.
* This can be at most 1 GiB, due to the fixmap living in the next 1 GiB (see
* level2_kernel_pgt in arch/x86/kernel/head_64.S).
*
* On KASLR use 1 GiB by default, leaving 1 GiB for modules once the
* page tables are fully set up.
*
* If KASLR is disabled we can shrink it to 0.5 GiB and increase the size
* of the modules area to 1.5 GiB.
*/
OUTPUT_FORMAT("elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(pa_text_start)
SECTIONS
{
real_mode_seg = 0;
. = 0;
.header : {
pa_real_mode_base = .;
*(.header)
}
. = ALIGN(4);
.rodata : {
*(.rodata)
*(.rodata.*)
. = ALIGN(16);
video_cards = .;
*(.videocards)
video_cards_end = .;
}
. = ALIGN((1 << 12));
pa_text_start = .;
.text : {
*(.text)
*(.text.*)
}
.text32 : {
*(.text32)
*(.text32.*)
}
.text64 : {
*(.text64)
*(.text64.*)
}
pa_ro_end = .;
. = ALIGN((1 << 12));
.data : {
*(.data)
*(.data.*)
}
. = ALIGN(128);
.bss : {
*(.bss*)
}
/* End signature for integrity checking */
. = ALIGN(4);
.signature : {
*(.signature)
}
/DISCARD/ : {
*(.note*)
*(.debug*)
}
pa_HEAP = HEAP;
pa_adapter = adapter;
pa_copy_from_fs = copy_from_fs;
pa_copy_to_fs = copy_to_fs;
pa_do_restore = do_restore;
pa_end_signature = end_signature;
pa_force_x = force_x;
pa_force_y = force_y;
pa_graphic_mode = graphic_mode;
pa_heap_end = heap_end;
pa_initregs = initregs;
pa_intcall = intcall;
pa_machine_real_restart_asm = machine_real_restart_asm;
pa_machine_real_restart_gdt = machine_real_restart_gdt;
pa_machine_real_restart_idt = machine_real_restart_idt;
pa_machine_real_restart_paging_off = machine_real_restart_paging_off;
pa_main = main;
pa_memcpy = memcpy;
pa_memset = memset;
pa_mode_defined = mode_defined;
pa_probe_cards = probe_cards;
pa_real_mode_header = real_mode_header;
pa_rm_heap = rm_heap;
pa_rm_stack = rm_stack;
pa_rm_stack_end = rm_stack_end;
pa_set_mode = set_mode;
pa_startup_32 = startup_32;
pa_startup_64 = startup_64;
pa_tr_cr4 = tr_cr4;
pa_tr_efer = tr_efer;
pa_tr_flags = tr_flags;
pa_tr_gdt = tr_gdt;
pa_trampoline_header = trampoline_header;
pa_trampoline_pgd = trampoline_pgd;
pa_trampoline_start = trampoline_start;
pa_vga_crtc = vga_crtc;
pa_wakeup_gdt = wakeup_gdt;
pa_wakeup_header = wakeup_header;
pa_wakeup_start = wakeup_start;
}