From 27853595ec2d56cc8a8bd083d102577b08fb999d Mon Sep 17 00:00:00 2001 From: Princess of Sleeping Date: Wed, 16 Sep 2020 22:35:40 +0900 Subject: Fix ksceKernelCpuUnrestrictedMemcpy alignment mistake. (#468) * Fix ksceKernelCpuUnrestrictedMemcpy alignment mistake. * Remove unnecessary if branches--- include/kernel/kernel/cpu.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'include/kernel') diff --git a/include/kernel/kernel/cpu.h b/include/kernel/kernel/cpu.h index b3ad11e..2a579c7 100644 --- a/include/kernel/kernel/cpu.h +++ b/include/kernel/kernel/cpu.h @@ -94,7 +94,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; -- cgit v1.2.3