diff --git a/zircon/system/ulib/c/BUILD.gn b/zircon/system/ulib/c/BUILD.gn
index 36f763d835c4a1328ff90115fefabb31029010f8..2df2d19d403902721b3d532c7f16a6997b370fb3 100644
--- a/zircon/system/ulib/c/BUILD.gn
+++ b/zircon/system/ulib/c/BUILD.gn
@@ -17,6 +17,7 @@ library("c") {
   sources = []
   deps = [
     "$zx/third_party/ulib/musl",
+    "setjmp",
   ]
 
   # Suppress the ${toolchain.implicit_deps} that points back to here.
diff --git a/zircon/third_party/ulib/musl/src/setjmp/BUILD.gn b/zircon/system/ulib/c/setjmp/BUILD.gn
similarity index 71%
rename from zircon/third_party/ulib/musl/src/setjmp/BUILD.gn
rename to zircon/system/ulib/c/setjmp/BUILD.gn
index 23a01521f564e4f40b1c17621ed62ba921d7a714..7ea23876370db53b61a1132ac53d54a074f0483b 100644
--- a/zircon/third_party/ulib/musl/src/setjmp/BUILD.gn
+++ b/zircon/system/ulib/c/setjmp/BUILD.gn
@@ -2,9 +2,6 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# TODO(mcgrathr): This code was all rewritten from scratch.  Move it out of
-# third_party/ulib/musl into system/ulib/c.
-
 source_set("setjmp") {
   deps = [
     "$zx/third_party/ulib/musl:musl_internal",
@@ -12,7 +9,6 @@ source_set("setjmp") {
   sources = [
     "${toolchain.cpu}/longjmp.S",
     "${toolchain.cpu}/setjmp.S",
-    "longjmp.c",
     "setjmp.c",
   ]
 }
diff --git a/zircon/third_party/ulib/musl/src/setjmp/aarch64/longjmp.S b/zircon/system/ulib/c/setjmp/aarch64/longjmp.S
similarity index 100%
rename from zircon/third_party/ulib/musl/src/setjmp/aarch64/longjmp.S
rename to zircon/system/ulib/c/setjmp/aarch64/longjmp.S
diff --git a/zircon/third_party/ulib/musl/src/setjmp/aarch64/setjmp.S b/zircon/system/ulib/c/setjmp/aarch64/setjmp.S
similarity index 100%
rename from zircon/third_party/ulib/musl/src/setjmp/aarch64/setjmp.S
rename to zircon/system/ulib/c/setjmp/aarch64/setjmp.S
diff --git a/zircon/third_party/ulib/musl/src/setjmp/setjmp.c b/zircon/system/ulib/c/setjmp/setjmp.c
similarity index 53%
rename from zircon/third_party/ulib/musl/src/setjmp/setjmp.c
rename to zircon/system/ulib/c/setjmp/setjmp.c
index 50ed889b648a0ee7a022147e33a0a10df011ca24..a29dc8276e9fed116feeeb474aca5825b02f123e 100644
--- a/zircon/third_party/ulib/musl/src/setjmp/setjmp.c
+++ b/zircon/system/ulib/c/setjmp/setjmp.c
@@ -1,3 +1,7 @@
+// Copyright 2017 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
 #include <assert.h>
 #include <setjmp.h>
 #include <stdint.h>
diff --git a/zircon/third_party/ulib/musl/src/setjmp/x86_64/longjmp.S b/zircon/system/ulib/c/setjmp/x86_64/longjmp.S
similarity index 100%
rename from zircon/third_party/ulib/musl/src/setjmp/x86_64/longjmp.S
rename to zircon/system/ulib/c/setjmp/x86_64/longjmp.S
diff --git a/zircon/third_party/ulib/musl/src/setjmp/x86_64/setjmp.S b/zircon/system/ulib/c/setjmp/x86_64/setjmp.S
similarity index 100%
rename from zircon/third_party/ulib/musl/src/setjmp/x86_64/setjmp.S
rename to zircon/system/ulib/c/setjmp/x86_64/setjmp.S
diff --git a/zircon/third_party/ulib/musl/BUILD.gn b/zircon/third_party/ulib/musl/BUILD.gn
index 62f1a00e5c223c6537a94f5309acb784d85d0df5..0e39f4b676e7713111a5c714a4a533da71554eab 100644
--- a/zircon/third_party/ulib/musl/BUILD.gn
+++ b/zircon/third_party/ulib/musl/BUILD.gn
@@ -17,6 +17,7 @@ config("headers") {
 group("musl_internal") {
   visibility = [
     "./*",
+    "$zx/system/ulib/c/*",
     "$zx/third_party/ulib/$malloc:*",
   ]
   public_deps = [
@@ -90,7 +91,6 @@ if (toolchain.base_environment == "user") {
       "src/process",
       "src/regex",
       "src/sched",
-      "src/setjmp",
       "src/signal",
       "src/stat",
       "src/stdio",
diff --git a/zircon/third_party/ulib/musl/src/setjmp/longjmp.c b/zircon/third_party/ulib/musl/src/setjmp/longjmp.c
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000