]> granicus.if.org Git - strace/commitdiff
Decode TLS syscalls on m68k
authorAndreas Schwab <schwab@linux-m68k.org>
Fri, 28 May 2010 20:28:51 +0000 (22:28 +0200)
committerAndreas Schwab <schwab@linux-m68k.org>
Fri, 28 May 2010 20:28:51 +0000 (22:28 +0200)
* linux/m68k/syscallent.h: Add entries for get_thread_area,
set_thread_area, atomic_comxchg_32, atomic_barrier.
* linux/dummy.h (sys_get_thread_area, sys_set_thread_area) [M68K]:
Don't redefine.
* mem.c (sys_get_thread_area, sys_set_thread_area) [LINUX && M68K]: New.

linux/dummy.h
linux/m68k/syscallent.h
mem.c

index 92e6886351d20ff2ea50997848c8d4e1b8dfab86..ce81649c4457bfa2e5de3d02b5b7a76c846ceb9f 100644 (file)
 /* machine-specific */
 #ifndef I386
 #define        sys_modify_ldt          printargs
+#ifndef M68K
 #define sys_get_thread_area    printargs
 #define sys_set_thread_area    printargs
 #endif
+#endif
 
 #define sys_sched_yield                printargs
 #define sys_sched_get_priority_max sys_sched_get_priority_min
index eba2f7f41d62f5536487c4977adb296d3e042a73..ab11be37e70619b1f44990bd7326a39aedf90292 100644 (file)
        { 5,    TD,     printargs,              "pwritev"       }, /* 330 */
        { 4,    TP|TS,  printargs,              "rt_tgsigqueueinfo"}, /* 331 */
        { 5,    TD,     printargs,              "perf_event_open"}, /* 332 */
-       { 5,    0,      printargs,              "SYS_333"       }, /* 333 */
-       { 5,    0,      printargs,              "SYS_334"       }, /* 334 */
-       { 5,    0,      printargs,              "SYS_335"       }, /* 335 */
-       { 5,    0,      printargs,              "SYS_336"       }, /* 336 */
+       { 0,    0,      sys_get_thread_area,    "get_thread_area"}, /* 333 */
+       { 1,    0,      sys_set_thread_area,    "set_thread_area"}, /* 334 */
+       { 6,    0,      printargs,              "atomic_comxchg_32"}, /* 335 */
+       { 0,    0,      printargs,              "atomic_barrier"}, /* 336 */
        { 5,    0,      printargs,              "SYS_337"       }, /* 337 */
        { 5,    0,      printargs,              "SYS_338"       }, /* 338 */
        { 5,    0,      printargs,              "SYS_339"       }, /* 339 */
diff --git a/mem.c b/mem.c
index d55cd695ca4fe4cad97af9f188a666a5d72b7d7c..ec5707a347ac420cef2a9cf755ca5d9973a463e3 100644 (file)
--- a/mem.c
+++ b/mem.c
@@ -710,6 +710,26 @@ struct tcb *tcp;
 }
 #endif /* LINUX && __i386__ */
 
+#if defined(LINUX) && defined(M68K)
+
+int
+sys_set_thread_area(tcp)
+struct tcb *tcp;
+{
+       if (entering(tcp))
+               tprintf("%#lx", tcp->u_arg[0]);
+       return 0;
+
+}
+
+int
+sys_get_thread_area(tcp)
+struct tcb *tcp;
+{
+       return RVAL_HEX;
+}
+#endif
+
 #if defined(LINUX)
 int
 sys_remap_file_pages(tcp)