Module Name:    src
Committed By:   kre
Date:           Mon Nov 19 10:05:09 UTC 2018

Modified Files:
        src/sys/arch/amd64/include: frame.h
        src/sys/arch/i386/include: frame.h
        src/sys/arch/xen/x86: hypervisor_machdep.c

Log Message:
Hide differences between i386 and amd64 interrupt frames so XEN does
not need to know there is one.   Hopefully unbreak i386 build.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/amd64/include/frame.h
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/i386/include/frame.h
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/xen/x86/hypervisor_machdep.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/amd64/include/frame.h
diff -u src/sys/arch/amd64/include/frame.h:1.18 src/sys/arch/amd64/include/frame.h:1.19
--- src/sys/arch/amd64/include/frame.h:1.18	Wed Jun 14 00:40:05 2017
+++ src/sys/arch/amd64/include/frame.h	Mon Nov 19 10:05:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: frame.h,v 1.18 2017/06/14 00:40:05 chs Exp $	*/
+/*	$NetBSD: frame.h,v 1.19 2018/11/19 10:05:09 kre Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -97,6 +97,14 @@ struct intrframe {
 	struct trapframe if_tf;
 };
 
+#ifdef XEN
+/*
+ * Need arch independany way to access IP and CS from intrframe
+ */
+#define	_INTRFRAME_IP	if_tf.tf_cs
+#define	_INTRFRAME_CS	if_tf.tf_rip
+#endif
+
 /*
  * Stack frame inside cpu_switchto()
  */

Index: src/sys/arch/i386/include/frame.h
diff -u src/sys/arch/i386/include/frame.h:1.37 src/sys/arch/i386/include/frame.h:1.38
--- src/sys/arch/i386/include/frame.h:1.37	Sat Aug 12 13:11:23 2017
+++ src/sys/arch/i386/include/frame.h	Mon Nov 19 10:05:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: frame.h,v 1.37 2017/08/12 13:11:23 maxv Exp $	*/
+/*	$NetBSD: frame.h,v 1.38 2018/11/19 10:05:09 kre Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -129,6 +129,14 @@ struct intrframe {
 	int	if_ss;
 };
 
+#ifdef XEN
+/*
+ * need arch independant way to access ip and cs from intrframe
+ */
+#define	_INTRFRAME_CS	if_cs
+#define	_INTRFRAME_IP	if_eip
+#endif
+
 /*
  * Stack frame inside cpu_switchto()
  */

Index: src/sys/arch/xen/x86/hypervisor_machdep.c
diff -u src/sys/arch/xen/x86/hypervisor_machdep.c:1.32 src/sys/arch/xen/x86/hypervisor_machdep.c:1.33
--- src/sys/arch/xen/x86/hypervisor_machdep.c:1.32	Sun Nov 18 23:50:48 2018
+++ src/sys/arch/xen/x86/hypervisor_machdep.c	Mon Nov 19 10:05:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: hypervisor_machdep.c,v 1.32 2018/11/18 23:50:48 cherry Exp $	*/
+/*	$NetBSD: hypervisor_machdep.c,v 1.33 2018/11/19 10:05:09 kre Exp $	*/
 
 /*
  *
@@ -54,7 +54,7 @@
 
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hypervisor_machdep.c,v 1.32 2018/11/18 23:50:48 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hypervisor_machdep.c,v 1.33 2018/11/19 10:05:09 kre Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -263,8 +263,8 @@ do_hypervisor_callback(struct intrframe 
 
 	/* Save trapframe for clock handler */
 	KASSERT(regs != NULL);
-	ci->ci_xen_clockf_usermode = USERMODE(regs->if_tf.tf_cs);
-	ci->ci_xen_clockf_pc = regs->if_tf.tf_rip;
+	ci->ci_xen_clockf_usermode = USERMODE(regs->_INTRFRAME_CS);
+	ci->ci_xen_clockf_pc = regs->_INTRFRAME_IP;
 
 	// DDD printf("do_hypervisor_callback\n");
 

Reply via email to