@@ -1293,6 +1293,61 @@ static abi_long freebsd_syscall(CPUArchState *env, int num, abi_long arg1,
ret = do_freebsd_setfib(arg1);
break;
+ /*
+ * thread system calls
+ */
+ case TARGET_FREEBSD_NR_thr_new: /* thr_new(2) */
+ ret = do_freebsd_thr_new(env, arg1, arg2);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_set_name: /* thr_set_name(2) */
+ ret = do_freebsd_thr_set_name(arg1, arg2);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_self: /* thr_self(2) */
+ ret = do_freebsd_thr_self(arg1);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_suspend: /* thr_suspend(2) */
+ ret = do_freebsd_thr_suspend(arg1);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_wake: /* thr_wake(2) */
+ ret = do_freebsd_thr_wake(arg1);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_kill: /* thr_kill(2) */
+ ret = do_freebsd_thr_kill(arg1, arg2);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_kill2: /* thr_kill2(2) */
+ ret = do_freebsd_thr_kill2(arg1, arg2, arg3);
+ break;
+
+ case TARGET_FREEBSD_NR_thr_exit: /* thr_exit(2) */
+ ret = do_freebsd_thr_exit(env, arg1);
+ break;
+
+ case TARGET_FREEBSD_NR_rtprio_thread: /* rtprio_thread(2) */
+ ret = do_freebsd_rtprio_thread(arg1, arg2, arg3);
+ break;
+
+ case TARGET_FREEBSD_NR_getcontext: /* getcontext(2) */
+ ret = do_freebsd_getcontext(env, arg1);
+ break;
+
+ case TARGET_FREEBSD_NR_setcontext: /* setcontext(2) */
+ ret = do_freebsd_setcontext(env, arg1);
+ break;
+
+ case TARGET_FREEBSD_NR_swapcontext: /* swapcontext(2) */
+ ret = do_freebsd_swapcontext(env, arg1, arg2);
+ break;
+
+ case TARGET_FREEBSD_NR__umtx_op: /* undocumented */
+ ret = do_freebsd__umtx_op(arg1, arg2, arg3, arg4, arg5);
+ break;
+
/*
* sys{ctl, arch, call}
*/