static inline u16 fs(void)
 {
        u16 seg;
-       asm("movw %%fs,%0" : "=rm" (seg));
+       asm volatile("movw %%fs,%0" : "=rm" (seg));
        return seg;
 }
 
 static inline u16 gs(void)
 {
        u16 seg;
-       asm("movw %%gs,%0" : "=rm" (seg));
+       asm volatile("movw %%gs,%0" : "=rm" (seg));
        return seg;
 }
 
 static inline u8 rdfs8(addr_t addr)
 {
        u8 v;
-       asm("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
+       asm volatile("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
        return v;
 }
 static inline u16 rdfs16(addr_t addr)
 {
        u16 v;
-       asm("movw %%fs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
+       asm volatile("movw %%fs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
        return v;
 }
 static inline u32 rdfs32(addr_t addr)
 {
        u32 v;
-       asm("movl %%fs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
+       asm volatile("movl %%fs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
        return v;
 }
 
 static inline u8 rdgs8(addr_t addr)
 {
        u8 v;
-       asm("movb %%gs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
+       asm volatile("movb %%gs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
        return v;
 }
 static inline u16 rdgs16(addr_t addr)
 {
        u16 v;
-       asm("movw %%gs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
+       asm volatile("movw %%gs:%1,%0" : "=r" (v) : "m" (*(u16 *)addr));
        return v;
 }
 static inline u32 rdgs32(addr_t addr)
 {
        u32 v;
-       asm("movl %%gs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
+       asm volatile("movl %%gs:%1,%0" : "=r" (v) : "m" (*(u32 *)addr));
        return v;
 }
 
 static inline int memcmp_fs(const void *s1, addr_t s2, size_t len)
 {
        u8 diff;
-       asm("fs; repe; cmpsb; setnz %0"
-           : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
+       asm volatile("fs; repe; cmpsb; setnz %0"
+                    : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
        return diff;
 }
 static inline int memcmp_gs(const void *s1, addr_t s2, size_t len)
 {
        u8 diff;
-       asm("gs; repe; cmpsb; setnz %0"
-           : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
+       asm volatile("gs; repe; cmpsb; setnz %0"
+                    : "=qm" (diff), "+D" (s1), "+S" (s2), "+c" (len));
        return diff;
 }
 
 
        cx = 0x0001;            /* Sector 0-0-1 */
        dx = devno;
        bx = (size_t)buf;
-       asm("pushfl; stc; int $0x13; setc %%al; popfl"
-           : "+a" (ax), "+c" (cx), "+d" (dx), "+b" (bx)
-           : : "esi", "edi", "memory");
+       asm volatile("pushfl; stc; int $0x13; setc %%al; popfl"
+                    : "+a" (ax), "+c" (cx), "+d" (dx), "+b" (bx)
+                    : : "esi", "edi", "memory");
 
        return -(u8)ax;         /* 0 or -1 */
 }
 
        u16 ax = 0x0200;
        u16 cx, dx;
 
-       asm("int $0x1a"
-           : "+a" (ax), "=c" (cx), "=d" (dx)
-           : : "ebx", "esi", "edi");
+       asm volatile("int $0x1a"
+                    : "+a" (ax), "=c" (cx), "=d" (dx)
+                    : : "ebx", "esi", "edi");
 
        return dx >> 8;
 }
 int getchar(void)
 {
        u16 ax = 0;
-       asm("int $0x16" : "+a" (ax));
+       asm volatile("int $0x16" : "+a" (ax));
 
        return ax & 0xff;
 }
 static int kbd_pending(void)
 {
        u8 pending;
-       asm("int $0x16; setnz %0"
-           : "=rm" (pending)
-           : "a" (0x0100));
+       asm volatile("int $0x16; setnz %0"
+                    : "=rm" (pending)
+                    : "a" (0x0100));
        return pending;
 }
 
 
 
 #ifdef CONFIG_VIDEO_400_HACK
        if (adapter >= ADAPTER_VGA) {
-               asm(INT10
-                   : : "a" (0x1202), "b" (0x0030)
-                   : "ecx", "edx", "esi", "edi");
+               asm volatile(INT10
+                            : : "a" (0x1202), "b" (0x0030)
+                            : "ecx", "edx", "esi", "edi");
        }
 #endif
 
        ax = 0x0f00;
-       asm(INT10
-           : "+a" (ax)
-           : : "ebx", "ecx", "edx", "esi", "edi");
+       asm volatile(INT10
+                    : "+a" (ax)
+                    : : "ebx", "ecx", "edx", "esi", "edi");
 
        mode = (u8)ax;