Module Name: src
Committed By: simonb
Date: Thu Mar 18 23:18:36 UTC 2021
Modified Files:
src/sys/arch/mips/include: ptrace.h
Log Message:
Add PTRACE_ILLEGAL_ASM using the MIPS32r6/MIPS64r6 backwards and
forwards compatible "sigrie" instruction to generate a Reserved
Instruction trap.
To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/mips/include/ptrace.h
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/mips/include/ptrace.h
diff -u src/sys/arch/mips/include/ptrace.h:1.18 src/sys/arch/mips/include/ptrace.h:1.19
--- src/sys/arch/mips/include/ptrace.h:1.18 Sun Jul 26 08:08:41 2020
+++ src/sys/arch/mips/include/ptrace.h Thu Mar 18 23:18:36 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: ptrace.h,v 1.18 2020/07/26 08:08:41 simonb Exp $ */
+/* $NetBSD: ptrace.h,v 1.19 2021/03/18 23:18:36 simonb Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -67,6 +67,21 @@
#define PTRACE_REG_SP(r) (r)->r_regs[29]
#define PTRACE_REG_INTRV(r) (r)->r_regs[2]
+/*
+ * The sigrie is defined in the MIPS32r6 and MIPS64r6 specs to
+ * generate a Reserved Instruction trap but uses a previously
+ * reserved instruction encoding and is thus both backwards and
+ * forwards compatible.
+ */
+#define PTRACE_ILLEGAL_ASM do { \
+ asm volatile( \
+ ".set push; " \
+ ".set mips32r6; " \
+ "sigrie 0; " \
+ ".set pop; " \
+ ); \
+ } while (0);
+
#define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x00, 0x00, 0x00, 0x0d })
#define PTRACE_BREAKPOINT_ASM __asm __volatile("break")
#define PTRACE_BREAKPOINT_SIZE 4