Index: uspace/lib/c/arch/ppc32/include/libarch/tls.h
===================================================================
--- uspace/lib/c/arch/ppc32/include/libarch/tls.h	(revision d4475a449597f547fae3e36ba0148dad1a28a423)
+++ uspace/lib/c/arch/ppc32/include/libarch/tls.h	(revision 0d83cf6f04f9a3bfef021c71a4d4e0c172f9ad79)
@@ -40,5 +40,5 @@
 #include <libc.h>
 
-#define PPC_TP_OFFSET 0x7000
+#define ARCH_TP_OFFSET (0x7000 + sizeof(tcb_t))
 
 typedef struct {
@@ -46,26 +46,14 @@
 } tcb_t;
 
-static inline void __tcb_set(tcb_t *tcb)
+static inline void __tcb_raw_set(void *tls)
 {
-	uint8_t *tp = (uint8_t *) tcb;
-	tp += PPC_TP_OFFSET + sizeof(tcb_t);
-
-	asm volatile (
-	    "mr %%r2, %0\n"
-	    :
-	    : "r" (tp)
-	);
+	asm volatile ("mr %%r2, %0\n" :: "r" (tls));
 }
 
-static inline tcb_t *__tcb_get(void)
+static inline void *__tcb_raw_get(void)
 {
-	uint8_t *retval;
-
-	asm volatile (
-	    "mr %0, %%r2\n"
-	    : "=r" (retval)
-	);
-
-	return (tcb_t *) (retval - PPC_TP_OFFSET - sizeof(tcb_t));
+	void *retval;
+	asm volatile ("mr %0, %%r2\n" : "=r" (retval));
+	return retval;
 }
 
