#ifndef CONFIG_IWMMXT
        u64 acc0;
 
+#ifndef CONFIG_AS_IS_LLVM
        asm volatile(".arch_extension xscale\n\t"
                     "mra %Q0, %R0, acc0" : "=r" (acc0));
+#else
+       asm volatile("mrrc p0, 0, %Q0, %R0, c0" : "=r" (acc0));
+#endif
 #endif
 
        /* ensure voltage-change sequencer not initiated, which hangs */
        case PM_SUSPEND_MEM:
                cpu_suspend(pwrmode, pxa27x_finish_suspend);
 #ifndef CONFIG_IWMMXT
+#ifndef CONFIG_AS_IS_LLVM
                asm volatile(".arch_extension xscale\n\t"
                             "mar acc0, %Q0, %R0" : "=r" (acc0));
+#else
+               asm volatile("mcrr p0, 0, %Q0, %R0, c0" :: "r" (acc0));
+#endif
 #endif
                break;
        }
 
 #ifndef CONFIG_IWMMXT
        u64 acc0;
 
+#ifdef CONFIG_CC_IS_GCC
        asm volatile(".arch_extension xscale\n\t"
                     "mra %Q0, %R0, acc0" : "=r" (acc0));
+#else
+       asm volatile("mrrc p0, 0, %Q0, %R0, c0" : "=r" (acc0));
+#endif
 #endif
 
        /* resuming from D2 requires the HSIO2/BOOT/TPM clocks enabled */
        AD3ER = 0;
 
 #ifndef CONFIG_IWMMXT
+#ifndef CONFIG_AS_IS_LLVM
        asm volatile(".arch_extension xscale\n\t"
                     "mar acc0, %Q0, %R0" : "=r" (acc0));
+#else
+       asm volatile("mcrr p0, 0, %Q0, %R0, c0" :: "r" (acc0));
+#endif
 #endif
 }