aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@linux-m68k.org>2010-05-28 22:28:51 +0200
committerAndreas Schwab <schwab@linux-m68k.org>2010-05-28 22:28:51 +0200
commit587432273982c136809a6e9182e8ecf674648706 (patch)
treeb458e8e3014d6ece1553b0e74c911353a4614754
parentffca9e30d6228532e84adc2cfe18f0ea72d199c5 (diff)
downloadandroid_external_strace-587432273982c136809a6e9182e8ecf674648706.tar.gz
android_external_strace-587432273982c136809a6e9182e8ecf674648706.tar.bz2
android_external_strace-587432273982c136809a6e9182e8ecf674648706.zip
Decode TLS syscalls on m68k
* 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.
-rw-r--r--linux/dummy.h2
-rw-r--r--linux/m68k/syscallent.h8
-rw-r--r--mem.c20
3 files changed, 26 insertions, 4 deletions
diff --git a/linux/dummy.h b/linux/dummy.h
index 92e68863..ce81649c 100644
--- a/linux/dummy.h
+++ b/linux/dummy.h
@@ -41,9 +41,11 @@
/* 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
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index eba2f7f4..ab11be37 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -361,10 +361,10 @@
{ 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 d55cd695..ec5707a3 100644
--- 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)