diff options
-rw-r--r-- | include/kernel/kernel/cpu.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/include/kernel/kernel/cpu.h b/include/kernel/kernel/cpu.h index b53cb10..356383a 100644 --- a/include/kernel/kernel/cpu.h +++ b/include/kernel/kernel/cpu.h @@ -95,7 +95,13 @@ static inline int sceKernelCpuUnrestrictedMemcpy(void *dst, const void *src, Sce asm volatile("mcr p15, 0, %0, c3, c0, 0" :: "r" (0xFFFF0000)); memcpy(dst, src, len); - sceKernelCpuDcacheWritebackRange((void *)((uintptr_t)dst & ~0x1F), (len + 0x1F) & ~0x1F); + + len += (SceSize)(((uintptr_t)dst) & 0x1F); + + dst = (void *)(((uintptr_t)dst) & ~0x1F); + len = (len + 0x1F) & ~0x1F; + + sceKernelCpuDcacheWritebackRange(dst, len); asm volatile("mcr p15, 0, %0, c3, c0, 0" :: "r" (prev_dacr)); return 0; |