/* BootMii - a Free Software replacement for the Nintendo/BroadOn bootloader. Requires mini. Copyright (C) 2008 Segher Boessenkool # This code is licensed to you under the terms of the GNU GPL, version 2; # see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt */ #include "bootmii_ppc.h" void sync_before_read(void *p, u32 len) { u32 a, b; a = (u32)p & ~0x1f; b = ((u32)p + len + 0x1f) & ~0x1f; for ( ; a < b; a += 32) asm("dcbi 0,%0" : : "b"(a)); asm("sync ; isync"); } void sync_after_write(const void *p, u32 len) { u32 a, b; a = (u32)p & ~0x1f; b = ((u32)p + len + 0x1f) & ~0x1f; for ( ; a < b; a += 32) asm("dcbst 0,%0" : : "b"(a)); asm("sync ; isync"); } void sync_before_exec(const void *p, u32 len) { u32 a, b; a = (u32)p & ~0x1f; b = ((u32)p + len + 0x1f) & ~0x1f; for ( ; a < b; a += 32) asm("dcbst 0,%0 ; sync ; icbi 0,%0" : : "b"(a)); asm("sync ; isync"); }