On 13 July 2013 11:28, Laurent Vivier <laur...@vivier.eu> wrote: > Le 12/07/2013 22:12, Peter Maydell a écrit : >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -8558,6 +8558,11 @@ abi_long do_syscall(void *cpu_env, int num, >> abi_long arg1, >> #elif defined(TARGET_I386) && defined(TARGET_ABI32) >> ret = do_set_thread_area(cpu_env, arg1); >> break; >> +#elif defined(TARGET_M68K) >> + { >> + TaskState *ts = ((CPUArchState *)cpu_env)->opaque; >> + ts->tp_value = arg1; >> + } > > Seems a "break" is missing here ?
Yes. >> #else >> goto unimplemented_nowarn; >> #endif >> @@ -8566,6 +8571,11 @@ abi_long do_syscall(void *cpu_env, int num, >> abi_long arg1, >> case TARGET_NR_get_thread_area: >> #if defined(TARGET_I386) && defined(TARGET_ABI32) >> ret = do_get_thread_area(cpu_env, arg1); >> +#elif defined(TARGET_M68K) >> + { >> + TaskState *ts = ((CPUArchState *)cpu_env)->opaque; >> + ts->tp_value = arg1; > > perhaps "ret = ts->tp_value;" ? Yes, silly cut-n-paste mistake. As I say I couldn't test m68k. Also I notice that both this and the existing i386 case are missing the 'break' and will fall through to the next syscall. thanks -- PMM