mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-20 07:44:54 -05:00
49 lines
1.6 KiB
C
49 lines
1.6 KiB
C
//
|
|
// Created by red031000 on 2020-04-24.
|
|
//
|
|
|
|
#ifndef POKEDIAMOND_OS_PROTECTIONREGION_H
|
|
#define POKEDIAMOND_OS_PROTECTIONREGION_H
|
|
|
|
#include "types.h"
|
|
#include "consts.h"
|
|
|
|
void OS_SetDPermissionsForProtectionRegion(register u32 setMask, register u32 flags);
|
|
void OS_SetProtectionRegion1(u32 param);
|
|
void OS_SetProtectionRegion2(u32 param);
|
|
|
|
typedef enum
|
|
{
|
|
OSi_PR_BASE_MASK_4KB = 0xfffff000,
|
|
OSi_PR_BASE_MASK_8KB = 0xffffe000,
|
|
OSi_PR_BASE_MASK_16KB = 0xffffc000,
|
|
OSi_PR_BASE_MASK_32KB = 0xffff8000,
|
|
OSi_PR_BASE_MASK_64KB = 0xffff0000,
|
|
OSi_PR_BASE_MASK_128KB = 0xfffe0000,
|
|
OSi_PR_BASE_MASK_256KB = 0xfffc0000,
|
|
OSi_PR_BASE_MASK_512KB = 0xfff80000,
|
|
OSi_PR_BASE_MASK_1MB = 0xfff00000,
|
|
OSi_PR_BASE_MASK_2MB = 0xffe00000,
|
|
OSi_PR_BASE_MASK_4MB = 0xffc00000,
|
|
OSi_PR_BASE_MASK_8MB = 0xff800000,
|
|
OSi_PR_BASE_MASK_16MB = 0xff000000,
|
|
OSi_PR_BASE_MASK_32MB = 0xfe000000,
|
|
OSi_PR_BASE_MASK_64MB = 0xfc000000,
|
|
OSi_PR_BASE_MASK_128MB = 0xf8000000,
|
|
OSi_PR_BASE_MASK_256MB = 0xf0000000,
|
|
OSi_PR_BASE_MASK_512MB = 0xe0000000,
|
|
OSi_PR_BASE_MASK_1GB = 0xc0000000,
|
|
OSi_PR_BASE_MASK_2GB = 0x80000000,
|
|
OSi_PR_BASE_MASK_4GB = 0x00000000
|
|
} OSiProtectionRegionBaseMask;
|
|
|
|
static inline u32 OSi_CalcPRParam(u32 address, u32 size, OSiProtectionRegionBaseMask mask) {
|
|
return ((address & mask) | size);
|
|
}
|
|
|
|
#define OS_SetProtectionRegion(regionNo, address, sizeStr) \
|
|
OS_SetProtectionRegion##regionNo(OSi_CalcPRParam(address, HW_C6_PR_##sizeStr, OSi_PR_BASE_MASK_##sizeStr) \
|
|
| 1)
|
|
|
|
#endif //POKEDIAMOND_OS_PROTECTIONREGION_H
|