• Is GET_CR0_INTO_EAX macro unused?

    From Denys Vlasenko@21:1/5 to All on Mon Oct 2 14:40:01 2017
    Hi Andy,

    From by git archaeology, looks like last use of GET_CR0_INTO_EAX
    was removed long ago, in 2008 (see commit below).

    Right now, I only grep it here in a comment in entry_32.S:
    /*
    * We use macros for low-level operations which need to be overridden
    * for paravirtualization. The following will never clobber any registers:
    * INTERRUPT_RETURN (aka. "iret")
    * GET_CR0_INTO_EAX (aka. "movl %cr0, %eax")

    To support GET_CR0_INTO_EAX, paravirt has PV_CPU_read_cr0 a.k.a.
    struct pv_cpu_ops::read_cr0 and a bunch of code to support it
    for each hypervisor.

    Can we delete it?
    Or am I missing a non-obvious place where this macro is still in use?



    commit 7643e9b936b4af31ba4851eb7d5b3a3bfad52502
    Author: Alexander van Heukelum <heukelum@fastmail.fm>
    Date: Tue Sep 9 21:56:02 2008 +0200

    i386: convert hardware exception 7 to an interrupt gate

    Handle no coprocessor exception with interrupt initially off.

    device_not_available in entry_32.S calls either math_state_restore
    or math_emulate. This patch adds an extra indirection to be
    able to re-enable interrupts explicitly in traps_32.c

    Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

    diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S
    index 109792b..5a88585 100644
    --- a/arch/x86/kernel/entry_32.S
    +++ b/arch/x86/kernel/entry_32.S
    @@ -760,20 +760,9 @@ ENTRY(device_not_available)
    RING0_INT_FRAME
    pushl $-1 # mark this as an int
    CFI_ADJUST_CFA_OFFSET 4
    - SAVE_ALL
    - GET_CR0_INTO_EAX
    - testl $0x4, %eax # EM (math emulation bit)
    - jne device_not_available_emulate
    - preempt_stop(CLBR_ANY)
    - call math_state_restore
    - jmp ret_from_exception
    -device_not_available_emulate:
    - pushl $0 # temporary storage for ORIG_EIP
    + pushl $do_device_not_available
    CFI_ADJUST_CFA_OFFSET 4
    - call math_emulate
    - addl $4, %esp
    - CFI_ADJUST_CFA_OFFSET -4
    - jmp ret_from_exception
    + jmp error_code
    CFI_ENDPROC
    END(device_not_available)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)