Starcraft, Cedega and TLS

I have tried to play starcraft in Linux using Wine. But the speed was unacceptable.
I've heard from others that wine works for them. However, it doesn't work here.
So I tried cedega days ago. The result is quite satisfactory! I don't need to return to Windows to play starcraft any more.

Yesterday I looked into the details of accessing thread local storage.
I wrote a small kernel module to get the base address of insmod process's tls segment, and then print the value of AT_SYSINFO
#include <linux/init.h>
#include <linux/module.h>
#include <asm/desc.h>

static int __init mod_init(void)
        int i=0, a=0, b=0, h, l;
        int *ptr=(int *)get_cpu_gdt_table(0);

        for(; i<28; i++){
                l = *ptr++;
                h = *ptr++;
                if (i==6){
                        b = h;
                        a = l;
                printk("0x%08x", h);
                printk(" %08x", l);
        a = a>>16 & 0xffff;
        a |= (b & 0xff)<<16;
        a |= b & 0xff000000;
        printk("0x%08x", *(int *)(a + 0x10));

       return 0;

static void __exit mod_exit(void)




Dan Ballard said…
I run windows 98 in QEmu for startcrat. Getting it to play network games is a bit of a hassle, but I've outlined it here:

Popular posts from this blog

XRP Ninja