Fixes TLS on x86 (take 3)
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 3 Apr 2010 20:00:45 +0000 (13:00 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:39 +0000 (17:35 -0700)
Fixes the segmentation limit, which somehow didn't make it into previous
commits.  The kernel is still vulnerable to a bad segment crashing the
system.

You MUST rebuild your cross compiler, and remake all of your apps with
it (make userclean, make tests, etc).

tools/compilers/gcc-glibc/glibc-2.11.1-ros/sysdeps/ros/i386/tls.h

index f14f7de..3fec942 100644 (file)
@@ -458,7 +458,7 @@ static const char* tls_init_tp(void* thrdescr)
   }
 
   // Build the segment
-  segdesc_t tmp = SEG(STA_W, (uint32_t)thrdescr, (uint32_t)thrdescr + 4, 3);
+  segdesc_t tmp = SEG(STA_W, (uint32_t)thrdescr, 0xffffffff, 3);
 
   // Setup the correct LDT entry for this hart
   __procdata.ldt[core_id] = tmp;