diff options
author | Princess of Sleeping | 2020-08-11 12:46:29 +0900 |
---|---|---|
committer | Sunguk Lee | 2020-08-12 02:11:49 +0900 |
commit | 7d34210fc73a100f7e04efc9af3c69636302dc86 (patch) | |
tree | b0e967bc27fb68e24b792000b710454b21864eac /include/kernel | |
parent | Fix return type of SceCpu (diff) | |
download | vds-libraries-7d34210fc73a100f7e04efc9af3c69636302dc86.tar.gz |
Refactor ksceKernelCpuUnrestrictedMemcpy
apply memcpy and volatile
Diffstat (limited to 'include/kernel')
-rw-r--r-- | include/kernel/kernel/cpu.h | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/include/kernel/kernel/cpu.h b/include/kernel/kernel/cpu.h index e60292c..b3ad11e 100644 --- a/include/kernel/kernel/cpu.h +++ b/include/kernel/kernel/cpu.h @@ -2,6 +2,7 @@ #define _PSP2_KERNEL_CPU_H_ #include <psp2kern/types.h> +#include <string.h> #ifdef __cplusplus extern "C" { @@ -89,15 +90,13 @@ static inline int sceKernelCpuUnrestrictedMemcpy(void *dst, const void *src, Sce { int prev_dacr; - asm ("mrc p15, 0, %0, c3, c0, 0" : "=r" (prev_dacr)); - asm ("mcr p15, 0, %0, c3, c0, 0" :: "r" (0xFFFF0000)); + asm volatile("mrc p15, 0, %0, c3, c0, 0" : "=r" (prev_dacr)); + asm volatile("mcr p15, 0, %0, c3, c0, 0" :: "r" (0xFFFF0000)); - for (size_t i=0; i < len; i++) { - ((char *) dst)[i] = ((char *) src)[i]; - } + memcpy(dst, src, len); sceKernelCpuDcacheWritebackRange((void *)((uintptr_t)dst & ~0x1F), (len + 0x1F) & ~0x1F); - asm ("mcr p15, 0, %0, c3, c0, 0" :: "r" (prev_dacr)); + asm volatile("mcr p15, 0, %0, c3, c0, 0" :: "r" (prev_dacr)); return 0; } |