6# error "Only include common_imp.h or common_header.h!"
10#define KU0_BASE 0x00000000
11#define KU1_BASE 0x40000000
13#define K0_BASE 0x80000000
14#define K0_SIZE 0x20000000
15#define K1_BASE 0xA0000000
16#define K1_SIZE 0x20000000
17#define K2_BASE 0xC0000000
18#define K2_SIZE 0x20000000
19#define K3_BASE 0xE0000000
20#define K3_SIZE 0x20000000
23#define SCE_SCRATCHPAD_ADDR 0x00010000
24#define SCE_SCRATCHPAD_ADDR_KU0 0x00010000
25#define SCE_SCRATCHPAD_ADDR_KU1 0x40010000
26#define SCE_SCRATCHPAD_ADDR_K0 0x80010000
27#define SCE_SCRATCHPAD_SIZE 0x00004000
29#define REBOOT_BASE_ADDR_K0 0x88600000
32#define SCE_USERSPACE_ADDR_KU0 0x08800000
33#define SCE_USERSPACE_ADDR_KU1 0x48800000
34#define SCE_USERSPACE_ADDR_K0 0x88800000
35#define SCE_USERSPACE_ADDR_K1 0xA8800000
36#define SCE_USERSPACE_SIZE 0x01800000
38#define SCE_USERSPACE_GAME_ADDR_K0 0x88900000
40#define UCACHED(ptr) (void *)((u32)(void *)(ptr) & 0x1FFFFFFF)
41#define KCACHED(ptr) (void *)(K0_BASE | ((u32)(void *)(ptr) & 0x1FFFFFFF))
42#define KUNCACHED(ptr) (void *)(K1_BASE | ((u32)(void *)(ptr) & 0x1FFFFFFF))
43#define UUNCACHED(ptr) (void *)(KU1_BASE | ((u32)(void *)(ptr) & 0x1FFFFFFF))
46#define UPALIGN256(v) (((v) + 0xFF) & 0xFFFFFF00)
47#define UPALIGN64(v) (((v) + 0x3F) & 0xFFFFFFC0)
48#define UPALIGN16(v) (((v) + 0xF) & 0xFFFFFFF0)
49#define UPALIGN8(v) (((v) + 0x7) & 0xFFFFFFF8)
50#define UPALIGN4(v) (((v) + 0x3) & 0xFFFFFFFC)
52#define ISALIGN4(v) (((u32)(v) & 0x03) == 0)
55static inline void pspClearMemory8(
void *ptr,
int size) {
57 for (i = 0; i < size; i++)
62static inline void pspClearMemory16(
void *ptr,
int size) {
64 for (i = 0; i < (int)(size /
sizeof(u16)); i++)
69static inline void pspClearMemory32(
void *ptr,
int size) {
71 for (i = 0; i < (int)(size /
sizeof(u32)); i++)
77static inline void pspClearMemory(
void *ptr,
int size) {
79 pspClearMemory32(ptr, size / 4);
80 else if (size % 2 == 0)
81 pspClearMemory16(ptr, size / 2);
83 pspClearMemory8(ptr, size);
86static inline void memsetInline(
void *s,
int c, SceSize size)
89 for (i = 0; i < size; i++)
91 *(u8 *)(s + i) = (u8)c;
95static inline void memcpyInline(
void *dest,
const void *src, SceSize size)
98 for (i = 0; i < size; i++)
100 *(u8 *)(dest + i) = *(u8 *)(src + i);
106#define L2_CACHE_CMD (vu32*)0xA7F00000
108static inline void pspL2CacheWriteback0(
void *ptr, u8 align) {
109 *L2_CACHE_CMD = 0xA0000000 | ((u32)ptr & 0x07FFFFC0) | align;
113static inline void pspL2CacheWriteback1(
void *ptr, u8 align) {
114 *L2_CACHE_CMD = 0xA0000000 | 0x08000000 | ((u32)ptr & 0x07FFFFC0) | align;
118static inline void pspL2CacheWriteback10(
void *ptr, u8 align) {
119 *L2_CACHE_CMD = 0xA0000000 | 0x08000000 | ((u32)ptr & 0x07FFFFC0) | align;
120 *L2_CACHE_CMD = 0xA0000000 | ((u32)ptr & 0x07FFFFC0) | align;