Index: uspace/lib/c/arch/sparc64/_link.ld.in
===================================================================
--- uspace/lib/c/arch/sparc64/_link.ld.in	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
+++ uspace/lib/c/arch/sparc64/_link.ld.in	(revision 1abcf1db7c2a8071caaf9983f1571b2ef88e1be6)
@@ -28,5 +28,4 @@
 
 	.got : {
-		 _gp = .;
 		 *(.got*);
 	} :data
Index: uspace/lib/c/arch/sparc64/src/entry.S
===================================================================
--- uspace/lib/c/arch/sparc64/src/entry.S	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
+++ uspace/lib/c/arch/sparc64/src/entry.S	(revision 1abcf1db7c2a8071caaf9983f1571b2ef88e1be6)
@@ -47,6 +47,4 @@
 
 	# Pass pcb_ptr as the first argument to __main()
+	call __main
 	mov %i1, %o0
-	sethi %hi(_gp), %l7
-	call __main
-	or %l7, %lo(_gp), %l7
Index: uspace/lib/c/arch/sparc64/src/thread_entry.S
===================================================================
--- uspace/lib/c/arch/sparc64/src/thread_entry.S	(revision 202872234fa56c357a39df0a3cd16a73688b3ff4)
+++ uspace/lib/c/arch/sparc64/src/thread_entry.S	(revision 1abcf1db7c2a8071caaf9983f1571b2ef88e1be6)
@@ -45,9 +45,7 @@
 	# Propagate the input arguments to the new window.
 	#
+
+	call __thread_main		! %o0 contains address of uarg
 	mov %i0, %o0
 
-	sethi %hi(_gp), %l7
-	call __thread_main		! %o0 contains address of uarg
-	or %l7, %lo(_gp), %l7
-
 	! not reached
