Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch Move x86_hotpatch() in !XENPV section. Fixes XEN3* ...



details:   https://anonhg.NetBSD.org/src/rev/db725d4308f4
branches:  trunk
changeset: 932227:db725d4308f4
user:      bouyer <bouyer%NetBSD.org@localhost>
date:      Sat May 02 17:14:01 2020 +0000

description:
Move x86_hotpatch() in !XENPV section. Fixes XEN3* builds.

diffstat:

 sys/arch/amd64/amd64/cpufunc.S |  78 ++++++++++++++++++++--------------------
 sys/arch/i386/i386/cpufunc.S   |  80 +++++++++++++++++++++---------------------
 2 files changed, 79 insertions(+), 79 deletions(-)

diffs (201 lines):

diff -r ae66f7ce314f -r db725d4308f4 sys/arch/amd64/amd64/cpufunc.S
--- a/sys/arch/amd64/amd64/cpufunc.S    Sat May 02 17:11:25 2020 +0000
+++ b/sys/arch/amd64/amd64/cpufunc.S    Sat May 02 17:14:01 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpufunc.S,v 1.50 2020/05/02 11:37:17 maxv Exp $        */
+/*     $NetBSD: cpufunc.S,v 1.51 2020/05/02 17:14:01 bouyer Exp $      */
 
 /*
  * Copyright (c) 1998, 2007, 2008 The NetBSD Foundation, Inc.
@@ -180,6 +180,44 @@
 2:
        jmp     1b
 END(tsc_get_timecount)
+
+/*
+ * %rdi = name
+ * %rsi = sel
+ */
+ENTRY(x86_hotpatch)
+       /* save RFLAGS, and disable intrs */
+       pushfq
+       cli
+
+       /* save CR0, and disable WP */
+       movq    %cr0,%rcx
+       pushq   %rcx
+       andq    $~CR0_WP,%rcx
+       movq    %rcx,%cr0
+
+       callq   _C_LABEL(x86_hotpatch_apply)
+
+       /* write back and invalidate cache */
+       wbinvd
+
+       /* restore CR0 */
+       popq    %rcx
+       movq    %rcx,%cr0
+
+       /* flush instruction pipeline */
+       pushq   %rax
+       callq   x86_flush
+       popq    %rax
+
+       /* clean up */
+       movq    %rax,%rdi
+       callq   _C_LABEL(x86_hotpatch_cleanup)
+
+       /* restore RFLAGS */
+       popfq
+       ret
+END(x86_hotpatch)
 #endif /* !XENPV */
 
 ENTRY(rdmsr_safe)
@@ -380,41 +418,3 @@
        outl    %eax, %dx
        ret
 END(outl)
-
-/*
- * %rdi = name
- * %rsi = sel
- */
-ENTRY(x86_hotpatch)
-       /* save RFLAGS, and disable intrs */
-       pushfq
-       cli
-
-       /* save CR0, and disable WP */
-       movq    %cr0,%rcx
-       pushq   %rcx
-       andq    $~CR0_WP,%rcx
-       movq    %rcx,%cr0
-
-       callq   _C_LABEL(x86_hotpatch_apply)
-
-       /* write back and invalidate cache */
-       wbinvd
-
-       /* restore CR0 */
-       popq    %rcx
-       movq    %rcx,%cr0
-
-       /* flush instruction pipeline */
-       pushq   %rax
-       callq   x86_flush
-       popq    %rax
-
-       /* clean up */
-       movq    %rax,%rdi
-       callq   _C_LABEL(x86_hotpatch_cleanup)
-
-       /* restore RFLAGS */
-       popfq
-       ret
-END(x86_hotpatch)
diff -r ae66f7ce314f -r db725d4308f4 sys/arch/i386/i386/cpufunc.S
--- a/sys/arch/i386/i386/cpufunc.S      Sat May 02 17:11:25 2020 +0000
+++ b/sys/arch/i386/i386/cpufunc.S      Sat May 02 17:14:01 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: cpufunc.S,v 1.39 2020/05/02 11:37:17 maxv Exp $        */
+/*     $NetBSD: cpufunc.S,v 1.40 2020/05/02 17:14:01 bouyer Exp $      */
 
 /*-
  * Copyright (c) 1998, 2007 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 #include <sys/errno.h>
 
 #include <machine/asm.h>
-__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.39 2020/05/02 11:37:17 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpufunc.S,v 1.40 2020/05/02 17:14:01 bouyer Exp $");
 
 #include "opt_xen.h"
 
@@ -71,6 +71,44 @@
        lidt    (%eax)
        ret
 END(lidt)
+
+ENTRY(x86_hotpatch)
+       /* save EFLAGS, and disable intrs */
+       pushfl
+       cli
+
+       /* save CR0, and disable WP */
+       movl    %cr0,%ecx
+       pushl   %ecx
+       andl    $~CR0_WP,%ecx
+       movl    %ecx,%cr0
+
+       pushl   4*4(%esp) /* arg2 */
+       pushl   4*4(%esp) /* arg1 */
+       call    _C_LABEL(x86_hotpatch_apply)
+       addl    $2*4,%esp
+
+       /* write back and invalidate cache */
+       wbinvd
+
+       /* restore CR0 */
+       popl    %ecx
+       movl    %ecx,%cr0
+
+       /* flush instruction pipeline */
+       pushl   %eax
+       call    x86_flush
+       popl    %eax
+
+       /* clean up */
+       pushl   %eax
+       call    _C_LABEL(x86_hotpatch_cleanup)
+       addl    $4,%esp
+
+       /* restore RFLAGS */
+       popfl
+       ret
+END(x86_hotpatch)
 #endif /* XENPV */
 
 ENTRY(x86_read_flags)
@@ -274,41 +312,3 @@
        outl    %eax, %dx
        ret
 END(outl)
-
-ENTRY(x86_hotpatch)
-       /* save EFLAGS, and disable intrs */
-       pushfl
-       cli
-
-       /* save CR0, and disable WP */
-       movl    %cr0,%ecx
-       pushl   %ecx
-       andl    $~CR0_WP,%ecx
-       movl    %ecx,%cr0
-
-       pushl   4*4(%esp) /* arg2 */
-       pushl   4*4(%esp) /* arg1 */
-       call    _C_LABEL(x86_hotpatch_apply)
-       addl    $2*4,%esp
-
-       /* write back and invalidate cache */
-       wbinvd
-
-       /* restore CR0 */
-       popl    %ecx
-       movl    %ecx,%cr0
-
-       /* flush instruction pipeline */
-       pushl   %eax
-       call    x86_flush
-       popl    %eax
-
-       /* clean up */
-       pushl   %eax
-       call    _C_LABEL(x86_hotpatch_cleanup)
-       addl    $4,%esp
-
-       /* restore RFLAGS */
-       popfl
-       ret
-END(x86_hotpatch)



Home | Main Index | Thread Index | Old Index