Yes, but it's no longer a global variable - it's a variable accessed through a pointer (in some way - it may be an offset from a segment variable in x86, but that's for all intents and purposes a pointer anyways) - and you can always do that yourself with a little bit of extra pointer stuff.
And volatile has nothing at all to do with TLS - it removes the need to use volatile because the memory is no longer accessible from multiple threads, but it's otherwise unrelated to volatile. Volatile simply means "compiler, please be aware that the use of this variable may change even if you don't think it will from looking at the code", which essentially means "do not optimize away reads/writes of the variable", and it was originally introduced in C as a means to allow the compiler to optimize your normal variables, but tell the compiler that hardware registers that aren't memory needs to be treated differently. It may come in handy with threads too, but it's a side-effect.
--
Mats