فهرست منبع

ptrace for m68k debugging.

David McCullough 25 سال پیش
والد
کامیت
84d08a9a0e
1فایلهای تغییر یافته به همراه33 افزوده شده و 0 حذف شده
  1. 33 0
      libc/sysdeps/linux/m68k/ptrace.c

+ 33 - 0
libc/sysdeps/linux/m68k/ptrace.c

@@ -0,0 +1,33 @@
+
+#include <errno.h>
+#include <asm/ptrace.h>
+#include <sys/syscall.h>
+
+int
+ptrace(int request, int pid, int addr, int data)
+{
+	long ret;
+	long res;
+	if (request > 0 && request < 4) (long *)data = &ret;
+
+	__asm__ volatile ("movel %1,%/d0\n\t"
+			  "movel %2,%/d1\n\t"
+			  "movel %3,%/d2\n\t"
+			  "movel %4,%/d3\n\t"
+			  "movel %5,%/d4\n\t"
+			  "trap  #0\n\t"
+			  "movel %/d0,%0"
+		:"=g" (res)
+		:"i" (SYS_ptrace), "g" (request), "g" (pid),
+		 "g" (addr), "g" (data) : "%d0", "%d1", "%d2", "%d3", "%d4");
+
+	if (res >= 0) {
+		if (request > 0 && request < 4) {
+			errno = 0;
+			return (ret);
+		}
+		return (int) res;
+	}
+	errno = -res;
+	return -1;
+}