summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-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;
}