[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <9138e8d1-9e31-5ac7-a5cd-727967a847ef@redhat.com>
Date: Mon, 2 Oct 2017 14:36:38 +0200
From: Denys Vlasenko <dvlasenk@...hat.com>
To: Andy Lutomirski <luto@...nel.org>,
Andy Lutomirski <luto@...capital.net>
Cc: x86@...nel.org, LKML <linux-kernel@...r.kernel.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...nel.org>
Subject: Is GET_CR0_INTO_EAX macro unused?
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@...tmail.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@...tmail.fm>
Signed-off-by: Ingo Molnar <mingo@...e.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)
Powered by blists - more mailing lists