Module Name:    src
Committed By:   maxv
Date:           Sun Apr 26 13:37:15 UTC 2020

Modified Files:
        src/common/lib/libc/arch/i386/atomic: atomic.S
        src/common/lib/libc/arch/x86_64/atomic: atomic.S
        src/sys/arch/x86/x86: patch.c

Log Message:
Drop the hardcoded array, use the hotpatch section.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/common/lib/libc/arch/i386/atomic/atomic.S
cvs rdiff -u -r1.18 -r1.19 src/common/lib/libc/arch/x86_64/atomic/atomic.S
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/x86/x86/patch.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libc/arch/i386/atomic/atomic.S
diff -u src/common/lib/libc/arch/i386/atomic/atomic.S:1.24 src/common/lib/libc/arch/i386/atomic/atomic.S:1.25
--- src/common/lib/libc/arch/i386/atomic/atomic.S:1.24	Sat Apr 25 15:26:16 2020
+++ src/common/lib/libc/arch/i386/atomic/atomic.S	Sun Apr 26 13:37:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.24 2020/04/25 15:26:16 bouyer Exp $	*/
+/*	$NetBSD: atomic.S,v 1.25 2020/04/26 13:37:14 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -44,7 +44,8 @@
 
 #ifdef _HARDKERNEL
 #include "opt_xen.h"
-#define	LOCK(n)		.Lpatch ## n:	lock
+#include <machine/frameasm.h>
+#define	LOCK(n)		HOTPATCH(HP_NAME_NOLOCK, 1); lock
 #define	ENDLABEL(a)	_ALIGN_TEXT; LABEL(a)
 #else
 #define	LOCK(n)		lock
@@ -269,12 +270,6 @@ ENTRY(sse2_mfence)
 	ret
 END(sse2_mfence)
 ENDLABEL(sse2_mfence_end)
-
-atomic_lockpatch:
-	.globl	atomic_lockpatch
-	.long	.Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5
-	.long	.Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10
-	.long	.Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15, 0
 #endif	/* _HARDKERNEL */
 
 ALIAS(atomic_add_32,_atomic_add_32)

Index: src/common/lib/libc/arch/x86_64/atomic/atomic.S
diff -u src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.18 src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.19
--- src/common/lib/libc/arch/x86_64/atomic/atomic.S:1.18	Sun Feb 17 07:34:44 2019
+++ src/common/lib/libc/arch/x86_64/atomic/atomic.S	Sun Apr 26 13:37:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: atomic.S,v 1.18 2019/02/17 07:34:44 isaki Exp $	*/
+/*	$NetBSD: atomic.S,v 1.19 2020/04/26 13:37:14 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -39,7 +39,8 @@
 #endif
 
 #ifdef _HARDKERNEL
-#define	LOCK(n)		.Lpatch ## n:	lock
+#include <machine/frameasm.h>
+#define	LOCK(n)		HOTPATCH(HP_NAME_NOLOCK, 1); lock
 #define	ENDLABEL(a)	_ALIGN_TEXT; LABEL(a)
 #else
 #define	LOCK(n)		lock
@@ -285,15 +286,6 @@ ENTRY(sse2_mfence)
 	ret
 END(sse2_mfence)
 ENDLABEL(sse2_mfence_end)
-
-atomic_lockpatch:
-	.globl	atomic_lockpatch
-	.quad	.Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5
-	.quad	.Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10
-	.quad	.Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15
-	.quad	.Lpatch16, .Lpatch17, .Lpatch18, .Lpatch19, .Lpatch20
-	.quad	.Lpatch21, .Lpatch22, .Lpatch24, .Lpatch25
-	.quad	.Lpatch26, 0
 #endif	/* _HARDKERNEL */
 
 ALIAS(atomic_add_32,_atomic_add_32)

Index: src/sys/arch/x86/x86/patch.c
diff -u src/sys/arch/x86/x86/patch.c:1.40 src/sys/arch/x86/x86/patch.c:1.41
--- src/sys/arch/x86/x86/patch.c:1.40	Sat Apr 25 15:26:18 2020
+++ src/sys/arch/x86/x86/patch.c	Sun Apr 26 13:37:14 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: patch.c,v 1.40 2020/04/25 15:26:18 bouyer Exp $	*/
+/*	$NetBSD: patch.c,v 1.41 2020/04/26 13:37:14 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: patch.c,v 1.40 2020/04/25 15:26:18 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: patch.c,v 1.41 2020/04/26 13:37:14 maxv Exp $");
 
 #include "opt_lockdebug.h"
 #ifdef i386
@@ -83,8 +83,6 @@ void	_atomic_cas_64_end(void);
 void	_atomic_cas_cx8(void);
 void	_atomic_cas_cx8_end(void);
 
-extern void	*atomic_lockpatch[];
-
 #define	X86_NOP		0x90
 #define	X86_REP		0xf3
 #define	X86_RET		0xc3
@@ -211,8 +209,6 @@ x86_patch(bool early)
 
 		/* lock -> nop */
 		x86_hotpatch(HP_NAME_NOLOCK, bytes, sizeof(bytes));
-		for (int i = 0; atomic_lockpatch[i] != 0; i++)
-			patchbytes(atomic_lockpatch[i], bytes, sizeof(bytes));
 #endif
 	}
 

Reply via email to