]> Chaos Git - corbenik/ctrulib.git/commitdiff
additional HB stuff
authorsmea <smealum@gmail.com>
Wed, 24 Dec 2014 05:05:55 +0000 (21:05 -0800)
committersmea <smealum@gmail.com>
Wed, 24 Dec 2014 05:05:55 +0000 (21:05 -0800)
libctru/include/3ds/services/hb.h
libctru/source/services/hb.c

index 4c9db571811d1ca85cc2a509e1fb2f679db30cb8..e71dd0f11f8a7716945e953c14be9dcb75eaa668 100644 (file)
 Result initHb();\r
 void exitHb();\r
 \r
+// flushes/invalidates entire data/instruction cache\r
+// can be useful when writing code to executable pages\r
+Result HB_FlushInvalidateCache(void);\r
+\r
+// fetches the address for ninjhax bootloader addresses, useful for running 3dsx executables\r
+// void (*callBootloader)(Handle hb, Handle file);\r
+// void (*setArgs)(u32* src, u32 length);\r
 Result HB_GetBootloaderAddresses(void** load3dsx, void** setArgv);\r
+\r
+// changes the permissions of a given number of pages at address addr to mode\r
+// should it fail, the appropriate kernel error code will be returned and *reprotectedPages (if not NULL)\r
+// will be set to the number of sequential pages which were successfully reprotected + 1\r
 Result HB_ReprotectMemory(u32* addr, u32 pages, u32 mode, u32* reprotectedPages);\r
 \r
 #endif\r
index 8221a4ee98d6afe00356c9b8f581f6833cf90d59..cf21f07c4ddd840cfedd9e7bcfb15604827743d4 100644 (file)
@@ -15,6 +15,21 @@ void exitHb()
        svcCloseHandle(hbHandle);\r
 }\r
 \r
+Result HB_FlushInvalidateCache(void)\r
+{\r
+       Result ret = 0;\r
+       u32 *cmdbuf = getThreadCommandBuffer();\r
+\r
+       cmdbuf[0] = 0x00010042;\r
+       cmdbuf[1] = 0x00000000;\r
+       cmdbuf[2] = 0x00000000;\r
+       cmdbuf[3] = 0xFFFF8001;\r
+\r
+       if((ret = svcSendSyncRequest(hbHandle))!=0) return ret;\r
+       \r
+       return (Result)cmdbuf[1];\r
+}\r
+\r
 Result HB_GetBootloaderAddresses(void** load3dsx, void** setArgv)\r
 {\r
        Result ret = 0;\r