--- qemu-0.12.3/tcg/arm/tcg-target.h.orig 2010-02-24 05:54:38.000000000 +0900 +++ qemu-0.12.3/tcg/arm/tcg-target.h 2010-07-01 23:48:50.000000000 +0900 @@ -75,7 +75,7 @@ static inline void flush_icache_range(unsigned long start, unsigned long stop) { #if QEMU_GNUC_PREREQ(4, 1) - __builtin___clear_cache((char *) start, (char *) stop); + __clear_cache((char *) start, (char *) stop); #else register unsigned long _beg __asm ("a1") = start; register unsigned long _end __asm ("a2") = stop; --- qemu-0.12.3/exec-all.h.orig 2010-02-24 05:54:38.000000000 +0900 +++ qemu-0.12.3/exec-all.h 2010-07-01 23:51:54.000000000 +0900 @@ -197,11 +197,12 @@ /* no need to flush icache explicitly */ } #elif defined(__arm__) +#if QEMU_GNUC_PREREQ(4, 1) +void __clear_cache(char *beg, char *end); +#endif static inline void tb_set_jmp_target1(unsigned long jmp_addr, unsigned long addr) { -#if QEMU_GNUC_PREREQ(4, 1) - void __clear_cache(char *beg, char *end); -#else +#if !QEMU_GNUC_PREREQ(4, 1) register unsigned long _beg __asm ("a1"); register unsigned long _end __asm ("a2"); register unsigned long _flg __asm ("a3");