Module Name:    src
Committed By:   matt
Date:           Fri Jan  7 15:11:31 UTC 2011

Modified Files:
        src/sys/arch/powerpc/include [matt-nb5-pq3]: instr.h
        src/sys/arch/powerpc/powerpc [matt-nb5-pq3]: trap.c

Log Message:
Move OPC_MFMSR definitions from trap.c
Add OPC_LWSYNC for booke.


To generate a diff of this commit:
cvs rdiff -u -r1.4.104.1 -r1.4.104.2 src/sys/arch/powerpc/include/instr.h
cvs rdiff -u -r1.128.4.1.4.1 -r1.128.4.1.4.2 \
    src/sys/arch/powerpc/powerpc/trap.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/powerpc/include/instr.h
diff -u src/sys/arch/powerpc/include/instr.h:1.4.104.1 src/sys/arch/powerpc/include/instr.h:1.4.104.2
--- src/sys/arch/powerpc/include/instr.h:1.4.104.1	Fri Jan  7 01:51:31 2011
+++ src/sys/arch/powerpc/include/instr.h	Fri Jan  7 15:11:30 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: instr.h,v 1.4.104.1 2011/01/07 01:51:31 matt Exp $ */
+/*	$NetBSD: instr.h,v 1.4.104.2 2011/01/07 15:11:30 matt Exp $ */
 
 /*
  * Copyright (c) 1992, 1993
@@ -390,6 +390,22 @@
 #define	B_AA		0x02	/* Absolute flag */
 
 /*
+ * Helpers for decoding mfspr
+ */
+#define	OPC_MFSPR_CODE		0x7c0002a6
+#define	OPC_MFSPR_MASK		(~(0x1f << 21))
+#define	OPC_MFSPR(spr)		(OPC_MFSPR_CODE |\
+				 (((spr) & 0x1f) << 16) |\
+				 (((spr) & 0x3e0) << 6))
+#define	OPC_MFSPR_REG(o)	(((o) >> 21) & 0x1f)
+#define	OPC_MFSPR_P(o, spr)	(((o) & OPC_MFSPR_MASK) == OPC_MFSPR(spr))
+
+/*
+ * booke doesn't have lwsync even though gcc emits it so we have to emulate it.
+ */
+#define	OPC_LWSYNC		0x7c2004ac
+
+/*
  * FPU data types.
  */
 #define FTYPE_LNG	-1	/* data = 64-bit signed long integer */		

Index: src/sys/arch/powerpc/powerpc/trap.c
diff -u src/sys/arch/powerpc/powerpc/trap.c:1.128.4.1.4.1 src/sys/arch/powerpc/powerpc/trap.c:1.128.4.1.4.2
--- src/sys/arch/powerpc/powerpc/trap.c:1.128.4.1.4.1	Fri Jan  7 02:05:58 2011
+++ src/sys/arch/powerpc/powerpc/trap.c	Fri Jan  7 15:11:30 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.128.4.1.4.1 2011/01/07 02:05:58 matt Exp $	*/
+/*	$NetBSD: trap.c,v 1.128.4.1.4.2 2011/01/07 15:11:30 matt Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.128.4.1.4.1 2011/01/07 02:05:58 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.128.4.1.4.2 2011/01/07 15:11:30 matt Exp $");
 
 #include "opt_altivec.h"
 #include "opt_ddb.h"
@@ -62,6 +62,7 @@
 #include <machine/psl.h>
 #include <machine/trap.h>
 #include <powerpc/altivec.h>
+#include <powerpc/instr.h>
 #include <powerpc/spr.h>
 #include <powerpc/oea/spr.h>
 #include <powerpc/userret.h>
@@ -775,14 +776,6 @@
 	if (copyin((void *)tf->tf_srr0, &opcode, sizeof(opcode)) != 0)
 		return 0;
 
-#define	OPC_MFSPR_CODE		0x7c0002a6
-#define	OPC_MFSPR_MASK		(0xfc0007ff|0x001ff800)
-#define	OPC_MFSPR(spr)		(OPC_MFSPR_CODE |\
-				 (((spr) & 0x1f) << 16) |\
-				 (((spr) & 0x3e0) << 6))
-#define	OPC_MFSPR_REG(o)	(((o) >> 21) & 0x1f)
-#define	OPC_MFSPR_P(o, spr)	(((o) & OPC_MFSPR_MASK) == OPC_MFSPR(spr))
-
 	if (OPC_MFSPR_P(opcode, SPR_PVR)) {
 		__asm ("mfpvr %0" : "=r"(tf->tf_fixreg[OPC_MFSPR_REG(opcode)]));
 		return 1;

Reply via email to