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;