#ifdef __arm__
 static void write_rreg(u_long base, u_int reg, u_int val)
 {
-       __asm__(
+       asm volatile(
        "str%?h %1, [%2]        @ NET_RAP\n\t"
        "str%?h %0, [%2, #-4]   @ NET_RDP"
        :
 static inline unsigned short read_rreg(u_long base_addr, u_int reg)
 {
        unsigned short v;
-       __asm__(
+       asm volatile(
        "str%?h %1, [%2]        @ NET_RAP\n\t"
        "ldr%?h %0, [%2, #-4]   @ NET_RDP"
        : "=r" (v)
 
 static inline void write_ireg(u_long base, u_int reg, u_int val)
 {
-       __asm__(
+       asm volatile(
        "str%?h %1, [%2]        @ NET_RAP\n\t"
        "str%?h %0, [%2, #8]    @ NET_IDP"
        :
 static inline unsigned short read_ireg(u_long base_addr, u_int reg)
 {
        u_short v;
-       __asm__(
+       asm volatile(
        "str%?h %1, [%2]        @ NAT_RAP\n\t"
        "ldr%?h %0, [%2, #8]    @ NET_IDP\n\t"
        : "=r" (v)
        length = (length + 1) & ~1;
        if ((int)buf & 2) {
                unsigned int tmp;
-               __asm__ __volatile__(
+               asm volatile(
                        "ldr%?h %2, [%0], #4\n\t"
                        "str%?b %2, [%1], #1\n\t"
                        "mov%?  %2, %2, lsr #8\n\t"
        }
        while (length > 8) {
                unsigned int tmp, tmp2, tmp3;
-               __asm__ __volatile__(
+               asm volatile(
                        "ldr%?h %2, [%0], #4\n\t"
                        "ldr%?h %3, [%0], #4\n\t"
                        "orr%?  %2, %2, %3, lsl #16\n\t"
        }
        while (length > 0) {
                unsigned int tmp;
-               __asm__ __volatile__(
+               asm volatile(
                        "ldr%?h %2, [%0], #4\n\t"
                        "str%?b %2, [%1], #1\n\t"
                        "mov%?  %2, %2, lsr #8\n\t"