summaryrefslogtreecommitdiff
path: root/arm9/lib/include/OS_protectionRegion.h
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-01 14:14:58 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-01 14:14:58 -0400
commit1531e217c7d80aaaeb551a08966a99db6fc55225 (patch)
tree2e36e7a0f63a66c44512b417faa0ba1eb5fbe655 /arm9/lib/include/OS_protectionRegion.h
parent150ec9cba3a4bf7624d2cdbc338b2849bde4decf (diff)
parente370125c3e2e34936152768c40bd932b88690baa (diff)
Merge branch 'master' of github.com:martmists/pokediamond into pikalax_work
Diffstat (limited to 'arm9/lib/include/OS_protectionRegion.h')
-rw-r--r--arm9/lib/include/OS_protectionRegion.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/arm9/lib/include/OS_protectionRegion.h b/arm9/lib/include/OS_protectionRegion.h
new file mode 100644
index 00000000..8e25420a
--- /dev/null
+++ b/arm9/lib/include/OS_protectionRegion.h
@@ -0,0 +1,48 @@
+//
+// 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