From df791c438289be1c3e7e0c5b89ce5b2ef855ebef Mon Sep 17 00:00:00 2001 From: Princess of Sleeping Date: Mon, 10 Aug 2020 14:51:12 +0900 Subject: Remove non-existing nid entry for SceCpu --- nids/360/SceSysmem.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/nids/360/SceSysmem.yml b/nids/360/SceSysmem.yml index 29cf2b2..2914100 100644 --- a/nids/360/SceSysmem.yml +++ b/nids/360/SceSysmem.yml @@ -133,8 +133,6 @@ modules: sceKernelCpuIcacheInvalidateAllU: 0xAEE0B489 sceKernelCpuIcacheInvalidateRange: 0xF4C7F578 sceKernelCpuPreloadEngineKill: 0xD0D85FF8 - sceKernelCpuRestoreContext: 0x0A4F0FB9 - sceKernelCpuSaveContext: 0x211B89DA sceKernelCpuUnrestrictedMemcpy: 0x8C683DEC sceKernelCpuUpdateSCTLR: 0x04008CF7 sceKernelMMUVAtoPAWithMode: 0x67343A07 -- cgit v1.2.3 From 55267aa6979d1d70315d5e4c04a5087149e0a653 Mon Sep 17 00:00:00 2001 From: Princess of Sleeping Date: Mon, 10 Aug 2020 15:14:10 +0900 Subject: Fix return type of SceCpu --- include/kernel/kernel/cpu.h | 42 +++++++++++------------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/include/kernel/kernel/cpu.h b/include/kernel/kernel/cpu.h index d0b5d5f..e60292c 100644 --- a/include/kernel/kernel/cpu.h +++ b/include/kernel/kernel/cpu.h @@ -34,10 +34,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); /** @@ -131,61 +129,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 +179,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 +201,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) -- cgit v1.2.3 From 7d34210fc73a100f7e04efc9af3c69636302dc86 Mon Sep 17 00:00:00 2001 From: Princess of Sleeping Date: Tue, 11 Aug 2020 12:46:29 +0900 Subject: Refactor ksceKernelCpuUnrestrictedMemcpy apply memcpy and volatile --- include/kernel/kernel/cpu.h | 11 +++++------ 1 file 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 +#include #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; } -- cgit v1.2.3