From b9aadce8bf66ce4793964663a23d4d793bc28b61 Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Tue, 16 Feb 2021 10:24:28 -0500 Subject: Remove inline asm in cpu.h --- 365compat/sceKernelCpuUnrestrictedMemcpy.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 365compat/sceKernelCpuUnrestrictedMemcpy.c (limited to '365compat/sceKernelCpuUnrestrictedMemcpy.c') diff --git a/365compat/sceKernelCpuUnrestrictedMemcpy.c b/365compat/sceKernelCpuUnrestrictedMemcpy.c new file mode 100644 index 0000000..5a4e4ce --- /dev/null +++ b/365compat/sceKernelCpuUnrestrictedMemcpy.c @@ -0,0 +1,22 @@ +/* + Vita Development Suite Libraries +*/ + +#include +#include + +#define ALIGN(x) ((((x) + 0x1F) >> 5) << 5) +#define ALIGN_BACK(x) (((x) >> 5) << 5) + +// Copied from sysmem.skprx 3.600 +// Unavailable in 3.650 +int sceKernelCpuUnrestrictedMemcpy(void *dst, const void *src, SceSize len) { + int dacr = __builtin_mrc(15, 0, 3, 0, 0); + __builtin_mcr(15, 0, 3, 0, 0, 0xFFFF0000); + memcpy(dst, src, len); + len = ALIGN((SceSize)dst + len) - ALIGN_BACK((SceSize)dst); + dst = (void*)ALIGN_BACK((SceSize)dst); + sceKernelCpuDcacheWritebackRange(dst, len); + __builtin_mcr(15, 0, 3, 0, 0, dacr); + return 0; +} -- cgit v1.2.3