diff --git a/src/cmd/gc/builtin.c.boot b/src/cmd/gc/builtin.c.boot
index d935fc5..0f189d3 100644
--- a/src/cmd/gc/builtin.c.boot
+++ b/src/cmd/gc/builtin.c.boot
@@ -56,8 +56,6 @@
 	"func sys.arrays2d (old *any, nel int) (ary []any)\n"
 	"func sys.closure ()\n"
 	"func sys.Breakpoint ()\n"
-	"func sys.Reflect (i interface { }) (? uint64, ? string, ? bool)\n"
-	"func sys.Unreflect (? uint64, ? string, ? bool) (ret interface { })\n"
 	"var sys.Args []string\n"
 	"var sys.Envs []string\n"
 	"func sys.Gosched ()\n"
@@ -72,5 +70,7 @@
 	"func unsafe.Offsetof (? any) (? int)\n"
 	"func unsafe.Sizeof (? any) (? int)\n"
 	"func unsafe.Alignof (? any) (? int)\n"
+	"func unsafe.Reflect (i interface { }) (? uint64, ? string, ? bool)\n"
+	"func unsafe.Unreflect (? uint64, ? string, ? bool) (ret interface { })\n"
 	"\n"
 	"$$\n";
diff --git a/src/cmd/gc/sys.go b/src/cmd/gc/sys.go
index 9c2bc4d..f77771a 100644
--- a/src/cmd/gc/sys.go
+++ b/src/cmd/gc/sys.go
@@ -77,9 +77,6 @@
 
 func	Breakpoint();
 
-func	Reflect(i interface { }) (uint64, string, bool);
-func	Unreflect(uint64, string, bool) (ret interface { });
-
 var	Args []string;
 var	Envs []string;
 
diff --git a/src/cmd/gc/unsafe.go b/src/cmd/gc/unsafe.go
index d1dcee0..9289a9c 100644
--- a/src/cmd/gc/unsafe.go
+++ b/src/cmd/gc/unsafe.go
@@ -9,3 +9,5 @@
 func	Offsetof(any) int;
 func	Sizeof(any) int;
 func	Alignof(any) int;
+func	Reflect(i interface { }) (uint64, string, bool);
+func	Unreflect(uint64, string, bool) (ret interface { });
diff --git a/src/lib/reflect/all_test.go b/src/lib/reflect/all_test.go
index d193efd..cc61bbb 100644
--- a/src/lib/reflect/all_test.go
+++ b/src/lib/reflect/all_test.go
@@ -314,7 +314,7 @@
 
 	i3 := v2.Interface();
 	if f, ok := i3.(float); !ok {
-		a, typ, c := sys.Reflect(i3);
+		a, typ, c := unsafe.Reflect(i3);
 		t.Error("v2.Interface() did not return float, got ", typ);
 	}
 }
diff --git a/src/lib/reflect/value.go b/src/lib/reflect/value.go
index ac7ed2f..c3b50ae 100644
--- a/src/lib/reflect/value.go
+++ b/src/lib/reflect/value.go
@@ -62,12 +62,12 @@
 	case c.typ.Kind() == InterfaceKind:
 		i = *(*interface{})(c.addr);
 	case c.typ.Size() > 8:	// TODO(rsc): how do we know it is 8?
-		i = sys.Unreflect(uint64(uintptr(c.addr)), c.typ.String(), true);
+		i = unsafe.Unreflect(uint64(uintptr(c.addr)), c.typ.String(), true);
 	default:
 		if uintptr(c.addr) == 0 {
 			panicln("reflect: address 0 for", c.typ.String());
 		}
-		i = sys.Unreflect(uint64(uintptr(*(*Addr)(c.addr))), c.typ.String(), false);
+		i = unsafe.Unreflect(uint64(uintptr(*(*Addr)(c.addr))), c.typ.String(), false);
 	}
 	return i;
 }
@@ -902,7 +902,7 @@
 
 // NewValue creates a new Value from the interface{} object provided.
 func NewValue(e interface {}) Value {
-	value, typestring, indir := sys.Reflect(e);
+	value, typestring, indir := unsafe.Reflect(e);
 	typ, ok := typecache[typestring];
 	if !ok {
 		typ = ParseTypeString("", typestring);
diff --git a/src/runtime/iface.c b/src/runtime/iface.c
index e5de5d1..cad7370 100644
--- a/src/runtime/iface.c
+++ b/src/runtime/iface.c
@@ -560,7 +560,7 @@
 }
 
 void
-sys·Reflect(Iface i, uint64 retit, String rettype, bool retindir)
+unsafe·Reflect(Iface i, uint64 retit, String rettype, bool retindir)
 {
 	int32 wid;
 
@@ -602,7 +602,7 @@
 // on the fake signature are:
 //
 //	(1) any interface conversion using the signature will fail
-//	(2) calling sys.Reflect() returns the args to unreflect
+//	(2) calling unsafe.Reflect() returns the args to unreflect
 //	(3) the right algorithm type is used, for == and map insertion
 //
 // (1) is ensured by the fact that we allocate a new Sigt,
@@ -757,7 +757,7 @@
 
 
 void
-sys·Unreflect(uint64 it, String type, bool indir, Iface ret)
+unsafe·Unreflect(uint64 it, String type, bool indir, Iface ret)
 {
 	Sigt *sigt;
 
@@ -767,8 +767,8 @@
 		goto out;
 
 	if(type.len > 10 && mcmp(type.str, (byte*)"interface ", 10) == 0) {
-		printf("sys.Unreflect: cannot put %S in interface\n", type);
-		throw("sys.Unreflect");
+		printf("unsafe.Unreflect: cannot put %S in interface\n", type);
+		throw("unsafe.Unreflect");
 	}
 
 	// if we think the type should be indirect
diff --git a/test/convert.go b/test/convert.go
index 11369e5..4952e01 100644
--- a/test/convert.go
+++ b/test/convert.go
@@ -9,7 +9,7 @@
 import "unsafe"
 
 func typeof(x interface{}) string {
-	val, typ, indir := sys.Reflect(x);
+	val, typ, indir := unsafe.Reflect(x);
 	return typ;
 }
 
