summaryrefslogtreecommitdiff
path: root/include/kernel
diff options
context:
space:
mode:
authorPrincess of Sleeping2020-08-11 12:46:29 +0900
committerSunguk Lee2020-08-12 02:11:49 +0900
commit7d34210fc73a100f7e04efc9af3c69636302dc86 (patch)
treeb0e967bc27fb68e24b792000b710454b21864eac /include/kernel
parentFix return type of SceCpu (diff)
downloadvds-libraries-7d34210fc73a100f7e04efc9af3c69636302dc86.tar.gz
Refactor ksceKernelCpuUnrestrictedMemcpy
apply memcpy and volatile
Diffstat (limited to 'include/kernel')
-rw-r--r--include/kernel/kernel/cpu.h11
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;
}