Module Name:    src
Committed By:   maxv
Date:           Thu Sep 27 13:04:22 UTC 2018

Modified Files:
        src/sys/arch/x86/include: dbregs.h
        src/sys/arch/x86/x86: dbregs.c

Log Message:
Export x86_dbregs_{save/restore}, will be used outside. Reproduce some
internal dbregs logic in them.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/x86/include/dbregs.h
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/x86/x86/dbregs.c

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

Modified files:

Index: src/sys/arch/x86/include/dbregs.h
diff -u src/sys/arch/x86/include/dbregs.h:1.6 src/sys/arch/x86/include/dbregs.h:1.7
--- src/sys/arch/x86/include/dbregs.h:1.6	Thu Jul 26 09:29:08 2018
+++ src/sys/arch/x86/include/dbregs.h	Thu Sep 27 13:04:22 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: dbregs.h,v 1.6 2018/07/26 09:29:08 maxv Exp $	*/
+/*	$NetBSD: dbregs.h,v 1.7 2018/09/27 13:04:22 maxv Exp $	*/
 
 /*
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -110,6 +110,10 @@ void x86_dbregs_init(void);
 void x86_dbregs_clear(struct lwp *);
 void x86_dbregs_abandon(struct lwp *);
 void x86_dbregs_read(struct lwp *, struct dbreg *);
+
+void x86_dbregs_save(struct lwp *);
+void x86_dbregs_restore(struct lwp *);
+
 void x86_dbregs_store_dr6(struct lwp *);
 int x86_dbregs_user_trap(void);
 int x86_dbregs_validate(const struct dbreg *);

Index: src/sys/arch/x86/x86/dbregs.c
diff -u src/sys/arch/x86/x86/dbregs.c:1.11 src/sys/arch/x86/x86/dbregs.c:1.12
--- src/sys/arch/x86/x86/dbregs.c:1.11	Thu Jul 26 09:29:08 2018
+++ src/sys/arch/x86/x86/dbregs.c	Thu Sep 27 13:04:21 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: dbregs.c,v 1.11 2018/07/26 09:29:08 maxv Exp $	*/
+/*	$NetBSD: dbregs.c,v 1.12 2018/09/27 13:04:21 maxv Exp $	*/
 
 /*
  * Copyright (c) 2016 The NetBSD Foundation, Inc.
@@ -144,11 +144,15 @@ x86_dbregs_read(struct lwp *l, struct db
 	memcpy(regs, pcb->pcb_dbregs, sizeof(*regs));
 }
 
-static void
+void
 x86_dbregs_save(struct lwp *l)
 {
 	struct pcb *pcb = lwp_getpcb(l);
 
+	if (!(pcb->pcb_flags & PCB_DBREGS)) {
+		return;
+	}
+
 	KASSERT(pcb->pcb_dbregs != NULL);
 
 	pcb->pcb_dbregs->dr[0] = rdr0();
@@ -160,11 +164,15 @@ x86_dbregs_save(struct lwp *l)
 	pcb->pcb_dbregs->dr[7] = rdr7();
 }
 
-static void
+void
 x86_dbregs_restore(struct lwp *l)
 {
 	struct pcb *pcb = lwp_getpcb(l);
 
+	if (!(pcb->pcb_flags & PCB_DBREGS)) {
+		return;
+	}
+
 	KASSERT(pcb->pcb_dbregs != NULL);
 
 	ldr0(pcb->pcb_dbregs->dr[0]);

Reply via email to