What is the difference between volatile and __volatile__ in C code compiled with gcc?
I was looking in the Linux source code and I noticed that some places use __asm__ __volatile__ others use asm volatile and others use __asm__ volatile.  
I have not seen __volatile__ used without __asm__, while I have seen volatile used in a variety of other places.
Is there any difference between what __volatile__ and volatile do?  If so what is it? Or if not is there a reason that __volatile__ is used sometimes?
 
     
     
     
    