Lines Matching +full:es +full:- +full:enable

1 /* SPDX-License-Identifier: GPL-2.0 */
19 #include <asm/asm-offsets.h>
21 #include <asm/processor-flags.h>
22 #include <asm/msr-index.h>
31 #define pa(X) ((X) - __PAGE_OFFSET)
50 * Worst-case size of the kernel mapping we need to make:
60 * 32-bit kernel entrypoint; only used by the boot CPU. On entry,
61 * %esi points to the real-mode code as a 32-bit pointer.
76 movl %eax,%es
80 leal -__PAGE_OFFSET(%ecx),%esp
94 * Note: %esi still has the pointer to the real-mode data.
131 #define KPMDS (((-__PAGE_OFFSET) >> 30) & 3) /* Number of kernel PMDs */
132 movl %eax,pa(initial_pg_pmd+0x1000*KPMDS-8)
155 * Non-boot CPU entry point; entered from trampoline.S
166 movl %eax,%es
171 leal -__PAGE_OFFSET(%ecx),%esp
198 movl $-1,pa(X86_CPUID) # preset CPUID level
228 cmpl $(0x8000ffff-0x80000001), %eax
240 /* Setup EFER (Extended Feature Enable Register) */
251 * Enable paging
263 * start system 32-bit setup. We need to re-do some of the things done
264 * in 16-bit mode for the "real" operations.
276 cmpl $-1,X86_CPUID
280 xorl %eax,%eax # call CPUID with 0 -> return vendor ID
314 movl $(__USER_DS),%eax # DS/ES contains default USER segment
316 movl %eax,%es
372 .fill early_idt_handler_array + i*EARLY_IDT_HANDLER_SIZE - ., 1, 0xcc
385 /* The vector number is in pt_regs->gs */
388 pushl %fs /* pt_regs->fs (__fsh varies by model) */
389 pushl %es /* pt_regs->es (__esh varies by model) */
390 pushl %ds /* pt_regs->ds (__dsh varies by model) */
391 pushl %eax /* pt_regs->ax */
392 pushl %ebp /* pt_regs->bp */
393 pushl %edi /* pt_regs->di */
394 pushl %esi /* pt_regs->si */
395 pushl %edx /* pt_regs->dx */
396 pushl %ecx /* pt_regs->cx */
397 pushl %ebx /* pt_regs->bx */
399 /* Fix up DS and ES */
402 movl %ecx, %es
407 /* Load GS into pt_regs->gs (and maybe clobber __gsh) */
413 popl %ebx /* pt_regs->bx */
414 popl %ecx /* pt_regs->cx */
415 popl %edx /* pt_regs->dx */
416 popl %esi /* pt_regs->si */
417 popl %edi /* pt_regs->di */
418 popl %ebp /* pt_regs->bp */
419 popl %eax /* pt_regs->ax */
420 popl %ds /* pt_regs->ds (always ignores __dsh) */
421 popl %es /* pt_regs->es (always ignores __esh) */
422 popl %fs /* pt_regs->fs (always ignores __fsh) */
423 popl %gs /* pt_regs->gs (always ignores __gsh) */
425 addl $4, %esp /* pop pt_regs->orig_ax */
429 /* This is the default interrupt "handler" :-) */
436 pushl %es
440 movl %eax,%es
455 popl %es
515 /* Page-aligned for the benefit of paravirt? */
534 .align PAGE_SIZE /* needs to be page-sized too */
551 * The SIZEOF_PTREGS gap is a convention which helps the in-kernel unwinder
555 .long init_thread_union + THREAD_SIZE -
556 SIZEOF_PTREGS - TOP_OF_KERNEL_STACK_PADDING)
562 #include "../../x86/xen/xen-head.S"
565 * The IDT and GDT 'descriptors' are a strange 48-bit object
567 * like usual segment descriptors - they consist of a 16-bit
568 * segment size, and 32-bit linear address value:
577 .long boot_gdt - __PAGE_OFFSET
583 .word GDT_ENTRIES*8-1