* Get the current Thread-Local Storage area:
  */
 
-#define GET_BASE(desc) ( \
-       (((desc)->a >> 16) & 0x0000ffff) | \
-       (((desc)->b << 16) & 0x00ff0000) | \
-       ( (desc)->b        & 0xff000000)   )
-
 #define GET_LIMIT(desc) ( \
        ((desc)->a & 0x0ffff) | \
         ((desc)->b & 0xf0000) )
 
        memset(&info, 0, sizeof(struct user_desc));
        info.entry_number = idx;
-       info.base_addr = GET_BASE(desc);
+       info.base_addr = get_desc_base(desc);
        info.limit = GET_LIMIT(desc);
        info.seg_32bit = GET_32BIT(desc);
        info.contents = GET_CONTENTS(desc);
 
 
 static inline u32 read_32bit_tls(struct task_struct *t, int tls)
 {
-       struct desc_struct *desc = (void *)t->thread.tls_array;
-       desc += tls;
-       return desc->base0 | 
-               (((u32)desc->base1) << 16) | 
-               (((u32)desc->base2) << 24);
+       return get_desc_base(&t->thread.tls_array[tls]);
 }
 
 /*