Lines Matching +full:processor +full:- +full:b +full:- +full:side

1 /* SPDX-License-Identifier: GPL-2.0 */
5 * Early support for invoking 32-bit EFI services from a 64-bit kernel.
8 * restore the firmware's 32-bit GDT and IDT before we make EFI service
11 * On the plus side, we don't have to worry about mangling 64-bit
12 * addresses into 32-bits because we're executing with an identity
13 * mapped pagetable and haven't transitioned to 64-bit virtual addresses
20 #include <asm/processor-flags.h>
26 * When booting in 64-bit mode on 32-bit EFI firmware, startup_64_mixed_mode()
29 * enter the kernel, it will either branch to the common 64-bit EFI stub
30 * entrypoint efi_stub_entry() directly, or via the 64-bit EFI PE/COFF
35 * +--------------+
36 * +------------------+ +------------+ +------>| efi_pe_entry |
37 * | efi32_pe_entry |---->| | | +-----------+--+
38 * +------------------+ | | +------+----------------+ |
39 * | startup_32 |---->| startup_64_mixed_mode | |
40 * +------------------+ | | +------+----------------+ |
41 * | efi32_stub_entry |---->| | | |
42 * +------------------+ +------------+ | |
44 * +------------+ +----------------+ |
45 * | startup_64 |<----| efi_stub_entry |<--------+
46 * +------------+ +----------------+
87 * Convert x86-64 ABI params to i386 ABI
106 * Switch to IDT and GDT with 32-bit segments. These are the firmware
110 * Pass the saved DS selector to the 32-bit code, and use far return to
132 /* Clear out 32-bit selector from FS and GS */
150 leal (_bss - 1b)(%ecx), %edi
151 leal (_ebss - 1b)(%ecx), %ecx
168 * The stack should represent the 32-bit calling convention.
250 sgdtl (efi32_boot_gdt - 1b)(%ebx)
251 movw %cs, (efi32_boot_cs - 1b)(%ebx)
252 movw %ds, (efi32_boot_ds - 1b)(%ebx)
255 sidtl (efi32_boot_idt - 1b)(%ebx)
258 leal (efi32_boot_args - 1b)(%ebx), %ebx
279 pushl %ebx // save callee-save registers
293 2: popl %edi // restore callee-save registers