/* Instruction cache flushing for rs6000, not on AIX */ /* * Copyright 1997-1999 Bruno Haible, * * This is free software distributed under the GNU General Public Licence * described in the file COPYING. Contact the author if you don't have this * or can't live with it. There is ABSOLUTELY NO WARRANTY, explicit or implied, * on this software. */ void __TR_clear_cache (char* first_addr) { /* Taken from egcs-1.1.2/gcc/config/rs6000/tramp.asm. */ asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+4)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+8)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+12)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+16)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+20)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+24)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+28)); asm volatile ("icbi 0,%0; dcbf 0,%0" : : "r" (first_addr+32)); asm volatile ("sync; isync"); }