From: "tip-bot for H. Peter Anvin" <hpa@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@redhat.com,
tglx@linutronix.de, petkovbb@gmail.com
Subject: [tip:x86/cpu] x86, msr: CFI annotations, cleanups for msr-reg.S
Date: Mon, 31 Aug 2009 23:38:19 GMT [thread overview]
Message-ID: <tip-79c5dca3619d6ae15815eec14cd7a43db5f38b47@git.kernel.org> (raw)
In-Reply-To: <1251705011-18636-1-git-send-email-petkovbb@gmail.com>
Commit-ID: 79c5dca3619d6ae15815eec14cd7a43db5f38b47
Gitweb: http://git.kernel.org/tip/79c5dca3619d6ae15815eec14cd7a43db5f38b47
Author: H. Peter Anvin <hpa@zytor.com>
AuthorDate: Mon, 31 Aug 2009 13:59:53 -0700
Committer: H. Peter Anvin <hpa@zytor.com>
CommitDate: Mon, 31 Aug 2009 15:14:47 -0700
x86, msr: CFI annotations, cleanups for msr-reg.S
Add CFI annotations for native_{rd,wr}msr_safe_regs().
Simplify the 64-bit implementation: we don't allow the upper half
registers to be set, and so we can use them to carry state across the
operation.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Cc: Borislav Petkov <petkovbb@gmail.com>
LKML-Reference: <1251705011-18636-1-git-send-email-petkovbb@gmail.com>
---
arch/x86/lib/msr-reg.S | 80 +++++++++++++++++++++++++-----------------------
1 files changed, 42 insertions(+), 38 deletions(-)
diff --git a/arch/x86/lib/msr-reg.S b/arch/x86/lib/msr-reg.S
index 51f1bb3..9e8cdcf 100644
--- a/arch/x86/lib/msr-reg.S
+++ b/arch/x86/lib/msr-reg.S
@@ -1,5 +1,6 @@
#include <linux/linkage.h>
#include <linux/errno.h>
+#include <asm/dwarf2.h>
#include <asm/asm.h>
#include <asm/msr.h>
@@ -12,10 +13,11 @@
*/
.macro op_safe_regs op:req
ENTRY(native_\op\()_safe_regs)
- push %rbx
- push %rbp
- push $0 /* Return value */
- push %rdi
+ CFI_STARTPROC
+ pushq_cfi %rbx
+ pushq_cfi %rbp
+ movq %rdi, %r10 /* Save pointer */
+ xorl %r11d, %r11d /* Return value */
movl (%rdi), %eax
movl 4(%rdi), %ecx
movl 8(%rdi), %edx
@@ -23,27 +25,26 @@ ENTRY(native_\op\()_safe_regs)
movl 20(%rdi), %ebp
movl 24(%rdi), %esi
movl 28(%rdi), %edi
+ CFI_REMEMBER_STATE
1: \op
-2: movl %edi, %r10d
- pop %rdi
- movl %eax, (%rdi)
- movl %ecx, 4(%rdi)
- movl %edx, 8(%rdi)
- movl %ebx, 12(%rdi)
- movl %ebp, 20(%rdi)
- movl %esi, 24(%rdi)
- movl %r10d, 28(%rdi)
- pop %rax
- pop %rbp
- pop %rbx
+2: movl %eax, (%r10)
+ movl %r11d, %eax /* Return value */
+ movl %ecx, 4(%r10)
+ movl %edx, 8(%r10)
+ movl %ebx, 12(%r10)
+ movl %ebp, 20(%r10)
+ movl %esi, 24(%r10)
+ movl %edi, 28(%r10)
+ popq_cfi %rbp
+ popq_cfi %rbx
ret
3:
- movq $-EIO, 8(%rsp)
+ CFI_RESTORE_STATE
+ movl $-EIO, %r11d
jmp 2b
- .section __ex_table,"ax"
- .balign 4
- .quad 1b, 3b
- .previous
+
+ _ASM_EXTABLE(1b, 3b)
+ CFI_ENDPROC
ENDPROC(native_\op\()_safe_regs)
.endm
@@ -51,12 +52,13 @@ ENDPROC(native_\op\()_safe_regs)
.macro op_safe_regs op:req
ENTRY(native_\op\()_safe_regs)
- push %ebx
- push %ebp
- push %esi
- push %edi
- push $0 /* Return value */
- push %eax
+ CFI_STARTPROC
+ pushl_cfi %ebx
+ pushl_cfi %ebp
+ pushl_cfi %esi
+ pushl_cfi %edi
+ pushl_cfi $0 /* Return value */
+ pushl_cfi %eax
movl 4(%eax), %ecx
movl 8(%eax), %edx
movl 12(%eax), %ebx
@@ -64,30 +66,32 @@ ENTRY(native_\op\()_safe_regs)
movl 24(%eax), %esi
movl 28(%eax), %edi
movl (%eax), %eax
+ CFI_REMEMBER_STATE
1: \op
-2: push %eax
+2: pushl_cfi %eax
movl 4(%esp), %eax
- pop (%eax)
+ popl_cfi (%eax)
addl $4, %esp
+ CFI_ADJUST_CFA_OFFSET -4
movl %ecx, 4(%eax)
movl %edx, 8(%eax)
movl %ebx, 12(%eax)
movl %ebp, 20(%eax)
movl %esi, 24(%eax)
movl %edi, 28(%eax)
- pop %eax
- pop %edi
- pop %esi
- pop %ebp
- pop %ebx
+ popl_cfi %eax
+ popl_cfi %edi
+ popl_cfi %esi
+ popl_cfi %ebp
+ popl_cfi %ebx
ret
3:
+ CFI_RESTORE_STATE
movl $-EIO, 4(%esp)
jmp 2b
- .section __ex_table,"ax"
- .balign 4
- .long 1b, 3b
- .previous
+
+ _ASM_EXTABLE(1b, 3b)
+ CFI_ENDPROC
ENDPROC(native_\op\()_safe_regs)
.endm
next prev parent reply other threads:[~2009-08-31 23:38 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-08 11:53 [PATCH] x86: clear incorrectly forced X86_FEATURE_LAHF_LM flag Kevin Winchester
2009-08-08 15:20 ` Borislav Petkov
2009-08-08 15:42 ` Ingo Molnar
2009-08-08 16:15 ` Ingo Molnar
2009-08-08 22:06 ` Kevin Winchester
2009-08-08 23:17 ` [PATCH v2] " Kevin Winchester
2009-08-10 13:12 ` Borislav Petkov
2009-08-10 22:56 ` [PATCH v3] " Kevin Winchester
2009-08-11 9:44 ` Borislav Petkov
2009-08-11 11:36 ` [tip:x86/urgent] x86: Clear " tip-bot for Kevin Winchester
2009-08-11 14:37 ` [PATCH v3] x86: clear " Mikael Pettersson
2009-08-11 14:56 ` Kevin Winchester
2009-08-11 15:51 ` Borislav Petkov
2009-08-11 15:55 ` Kevin Winchester
2009-08-11 16:01 ` Borislav Petkov
2009-08-12 0:15 ` Kevin Winchester
2009-08-12 11:40 ` Borislav Petkov
2009-08-12 23:02 ` Kevin Winchester
2009-08-13 12:23 ` Borislav Petkov
2009-08-13 12:31 ` [PATCH 1/2] x86, msr: Add an AMD wrmsr with exception handling Borislav Petkov
2009-08-13 12:31 ` [PATCH 2/2] x86: Clear incorrectly forced X86_FEATURE_LAHF_LM flag Borislav Petkov
2009-08-13 14:21 ` Brian Gerst
2009-08-13 14:54 ` Kevin Winchester
2009-08-13 15:55 ` Brian Gerst
2009-08-13 16:18 ` Borislav Petkov
2009-08-13 22:45 ` Kevin Winchester
2009-08-13 15:54 ` Borislav Petkov
2009-08-13 14:57 ` [PATCH v3] x86: clear " Kevin Winchester
2009-08-13 23:24 ` Kevin Winchester
2009-08-14 12:00 ` Borislav Petkov
2009-08-14 12:06 ` [PATCH 1/2] x86, msr: Add a AMD wrmsr with exception handling Borislav Petkov
2009-08-15 17:06 ` [tip:x86/urgent] " tip-bot for Borislav Petkov
2009-08-14 12:06 ` [PATCH 2/2] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-15 17:06 ` [tip:x86/urgent] " tip-bot for Borislav Petkov
2009-08-16 6:41 ` Ingo Molnar
2009-08-16 20:10 ` Kevin Winchester
2009-08-16 20:51 ` Ingo Molnar
2009-08-16 21:49 ` Borislav Petkov
2009-08-21 17:40 ` H. Peter Anvin
2009-08-22 16:37 ` Borislav Petkov
2009-08-24 20:34 ` H. Peter Anvin
2009-08-25 5:52 ` Borislav Petkov
2009-08-25 6:44 ` H. Peter Anvin
2009-08-30 11:43 ` Borislav Petkov
2009-08-30 11:50 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Borislav Petkov
2009-08-30 11:50 ` [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants Borislav Petkov
2009-08-30 20:03 ` H. Peter Anvin
2009-08-30 20:46 ` Borislav Petkov
2009-08-30 20:04 ` H. Peter Anvin
2009-08-30 11:50 ` [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-30 19:22 ` H. Peter Anvin
2009-08-30 19:30 ` Borislav Petkov
2009-08-30 20:02 ` H. Peter Anvin
2009-08-30 20:29 ` Borislav Petkov
2009-08-30 20:48 ` H. Peter Anvin
2009-08-31 7:34 ` Borislav Petkov
2009-08-31 7:50 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] x86, msr: Add " tip-bot for Borislav Petkov
2009-09-01 11:05 ` Ingo Molnar
2009-09-01 13:06 ` Borislav Petkov
2009-09-04 14:08 ` Ingo Molnar
2009-09-04 16:26 ` H. Peter Anvin
2009-09-04 17:06 ` [tip:x86/cpu] x86, msr: change msr-reg.o to obj-y, and export its symbols tip-bot for H. Peter Anvin
2009-09-05 9:57 ` Borislav Petkov
2009-09-06 4:41 ` H. Peter Anvin
2009-08-31 23:38 ` tip-bot for H. Peter Anvin [this message]
2009-09-03 22:55 ` [PATCH 1/3] x86, msr: add rd/wrmsr interfaces with preset registers Andrew Morton
2009-09-03 22:57 ` H. Peter Anvin
2009-09-03 23:14 ` Andrew Morton
2009-09-03 23:22 ` H. Peter Anvin
2009-09-04 6:39 ` Ingo Molnar
2009-09-04 8:27 ` Borislav Petkov
2009-08-31 7:50 ` [PATCH 2/3] x86, msr: rewrite AMD rd/wrmsr variants Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] x86, msr: Rewrite " tip-bot for Borislav Petkov
2009-08-31 7:50 ` [PATCH 3/3] x86, AMD: Disable wrongly set X86_FEATURE_LAHF_LM CPUID bit Borislav Petkov
2009-08-31 23:37 ` [tip:x86/cpu] " tip-bot for Borislav Petkov
2009-08-31 8:14 ` [PATCH 3/3] " Borislav Petkov
2009-08-31 18:03 ` H. Peter Anvin
2009-08-30 17:07 ` [tip:x86/urgent] " H. Peter Anvin
2009-08-30 19:17 ` Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-79c5dca3619d6ae15815eec14cd7a43db5f38b47@git.kernel.org \
--to=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=petkovbb@gmail.com \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome