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;