uOFW
Reverse engineered PSP kernel 6.60.
Loading...
Searching...
No Matches
sysmem_common.h
1/* Copyright (C) 2011, 2012, 2013 The uOFW team
2 See the file COPYING for copying permission.
3*/
4
5#ifndef SYSMEM_COMMON_H
6#define SYSMEM_COMMON_H
7
8/* Not sure where this should be put */
9
10/* Accepts addresses with 3 first bits: 000, 010, 100, 101 (first half byte 0x0, 0x1, 0x4, 0x5, 0x8, 0x9, 0xA, 0xB) */
11#define VALID_ADDR_SEGMENT(addr) ((0x35 >> (((addr) >> 29) & 7)) & 1)
12/* Accepts 0x10000 - 0x14000, with first bits as above */
13#define ADDR_IS_SCRATCH(addr) ((((addr) >> 14) & 0x7FFF) == 4 && VALID_ADDR_SEGMENT(addr))
14/* Accepts 0x04000000 - 0x047FFFFF, with first bits as above */
15#define ADDR_IS_VRAM(addr) ((((addr) >> 23) & 0x3F) == 8 && VALID_ADDR_SEGMENT(addr))
16/* Accepts 0x08000000 - 0x087FFFFFF, with first bits as above */
17#define ADDR_IS_KERNEL_RAM(addr) (((((addr) >> 23) & 0x3F) != 0x10) && VALID_ADDR_SEGMENT(addr))
18/* Accepts 0x08000000 - 0x0FFFFFFF, 0x48000000 - 0x4FFFFFFF, 0x88000000 - 0x8FFFFFFF and 0xA8000000 - 0xAFFFFFFF */
19#define ADDR_IS_RAM(addr) ((0x00220202 >> (((addr) >> 27) & 0x1F)) & 1)
20
21#endif
22