Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/mips/include Add PTRACE_ILLEGAL_ASM using the MIPS3...
details: https://anonhg.NetBSD.org/src/rev/61785003ca60
branches: trunk
changeset: 953732:61785003ca60
user: simonb <simonb%NetBSD.org@localhost>
date: Thu Mar 18 23:18:36 2021 +0000
description:
Add PTRACE_ILLEGAL_ASM using the MIPS32r6/MIPS64r6 backwards and
forwards compatible "sigrie" instruction to generate a Reserved
Instruction trap.
diffstat:
sys/arch/mips/include/ptrace.h | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diffs (31 lines):
diff -r 47c9a25bb0a6 -r 61785003ca60 sys/arch/mips/include/ptrace.h
--- a/sys/arch/mips/include/ptrace.h Thu Mar 18 22:51:32 2021 +0000
+++ b/sys/arch/mips/include/ptrace.h Thu Mar 18 23:18:36 2021 +0000
@@ -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
Home |
Main Index |
Thread Index |
Old Index