svn commit: r354990 - head/sys/powerpc/powerpc
Justin Hibbits
jhibbits at FreeBSD.org
Fri Nov 22 04:34:47 UTC 2019
Author: jhibbits
Date: Fri Nov 22 04:34:46 2019
New Revision: 354990
URL: https://svnweb.freebsd.org/changeset/base/354990
Log:
powerpc/ptrace: Give ptrace(2) access to SPE registers when available
SPE registers are already exported in core dumps with the VMX note, so use
the same interface for live access.
Instead of simply guarding out in #ifndef __SPE__ the cpu_feature check, I
chose to keep the check and check against PPC_FEATURE_SPE, on the off-chance
someone decides to run a SPE kernel on a non-SPE device (which is possible,
though highly unlikely, and would be no different from running a MPC85XX
kernel in that instance).
Modified:
head/sys/powerpc/powerpc/ptrace_machdep.c
Modified: head/sys/powerpc/powerpc/ptrace_machdep.c
==============================================================================
--- head/sys/powerpc/powerpc/ptrace_machdep.c Fri Nov 22 00:22:55 2019 (r354989)
+++ head/sys/powerpc/powerpc/ptrace_machdep.c Fri Nov 22 04:34:46 2019 (r354990)
@@ -40,6 +40,12 @@ __FBSDID("$FreeBSD$");
#include <machine/md_var.h>
#include <machine/pcb.h>
+#ifdef __SPE__
+#define PPC_FEATURE_VECTOR PPC_FEATURE_HAS_SPE
+#else
+#define PPC_FEATURE_VECTOR PPC_FEATURE_HAS_ALTIVEC
+#endif
+
int
cpu_ptrace(struct thread *td, int req, void *addr, int data)
{
@@ -58,7 +64,7 @@ cpu_ptrace(struct thread *td, int req, void *addr, int
error = EINVAL;
switch (req) {
case PT_GETVRREGS:
- if (!(cpu_features & PPC_FEATURE_HAS_ALTIVEC))
+ if (!(cpu_features & PPC_FEATURE_VECTOR))
break;
if (pcb->pcb_flags & PCB_VEC) {
@@ -68,7 +74,7 @@ cpu_ptrace(struct thread *td, int req, void *addr, int
error = copyout(&vec, addr, sizeof(vec));
break;
case PT_SETVRREGS:
- if (!(cpu_features & PPC_FEATURE_HAS_ALTIVEC))
+ if (!(cpu_features & PPC_FEATURE_VECTOR))
break;
error = copyin(addr, &vec, sizeof(vec));
if (error == 0) {
More information about the svn-src-all
mailing list