diff options
author | Sunguk Lee | 2020-08-12 02:12:45 +0900 |
---|---|---|
committer | Sunguk Lee | 2020-08-12 02:12:45 +0900 |
commit | 4c4816fb6914797f36321d3b731b303e4a4f1afd (patch) | |
tree | b0e967bc27fb68e24b792000b710454b21864eac /include | |
parent | Properly populated ScePowerCallbackType enum. (diff) | |
parent | Refactor ksceKernelCpuUnrestrictedMemcpy (diff) | |
download | vds-libraries-4c4816fb6914797f36321d3b731b303e4a4f1afd.tar.gz |
Merge branch 'pr/465' into master
Diffstat (limited to 'include')
-rw-r--r-- | include/kernel/kernel/cpu.h | 53 |
1 files changed, 16 insertions, 37 deletions
diff --git a/include/kernel/kernel/cpu.h b/include/kernel/kernel/cpu.h index d0b5d5f..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" { @@ -34,10 +35,8 @@ extern "C" { * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuDcacheWritebackRange(const void *ptr, SceSize len); +void sceKernelCpuDcacheWritebackRange(const void *ptr, SceSize len); /** @@ -91,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; } @@ -131,61 +128,47 @@ int sceKernelCpuEnableInterrupts(int flags); * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuDcacheInvalidateRange(const void *ptr, SceSize len); +void sceKernelCpuDcacheInvalidateRange(const void *ptr, SceSize len); /** * @brief Writeback and invalidate a range of L1 dcache (without L2) * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuDcacheWritebackInvalidateRange(const void *ptr, SceSize len); +void sceKernelCpuDcacheWritebackInvalidateRange(const void *ptr, SceSize len); /** * @brief Invalidate all the L1 dcache (without L2) - * - * @return Zero on success */ -int sceKernelCpuDcacheInvalidateAll(void); +void sceKernelCpuDcacheInvalidateAll(void); /** * @brief Writeback all the L1 dcache (without L2) - * - * @return Zero on success */ -int sceKernelCpuDcacheWritebackAll(void); +void sceKernelCpuDcacheWritebackAll(void); /** * @brief Writeback and invalidate all the L1 dcache (without L2) - * - * @return Zero on success */ -int sceKernelCpuDcacheWritebackInvalidateAll(void); +void sceKernelCpuDcacheWritebackInvalidateAll(void); /** * @brief Writeback a range of L1 dcache and L2 * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuDcacheAndL2WritebackRange(const void *ptr, SceSize len); +void sceKernelCpuDcacheAndL2WritebackRange(const void *ptr, SceSize len); /** * @brief Writeback and invalidate a range of L1 dcache and L2 * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuDcacheAndL2InvalidateRange(const void *ptr, SceSize len); +void sceKernelCpuDcacheAndL2InvalidateRange(const void *ptr, SceSize len); /** * @brief Writeback and invalidate a range of L1 dcache and L2 @@ -195,17 +178,15 @@ int sceKernelCpuDcacheAndL2InvalidateRange(const void *ptr, SceSize len); * * @return Zero on success */ -int sceKernelCpuDcacheAndL2WritebackInvalidateRange(const void *ptr, SceSize len); +void sceKernelCpuDcacheAndL2WritebackInvalidateRange(const void *ptr, SceSize len); /** * @brief Invalidate a range of L1 icache (without L2) * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuIcacheInvalidateRange(const void *ptr, SceSize len); +void sceKernelCpuIcacheInvalidateRange(const void *ptr, SceSize len); /** * @brief Invalidate all the L1 icache (without L2) @@ -219,10 +200,8 @@ int sceKernelCpuIcacheInvalidateAll(void); * * @param ptr The pointer * @param[in] len The length - * - * @return Zero on success */ -int sceKernelCpuIcacheAndL2WritebackInvalidateRange(const void *ptr, SceSize len); +void sceKernelCpuIcacheAndL2WritebackInvalidateRange(const void *ptr, SceSize len); /** * @brief Suspend all interrupts (disables IRQs) |