From 623ba48542c51ed21973d8304763d6c281bedd80 Mon Sep 17 00:00:00 2001 From: Jcw87 Date: Tue, 20 Jan 2026 16:35:11 -0800 Subject: [PATCH] JKernel wii (#3059) --- config/RZDE01_00/splits.txt | 36 ++++++++-------- config/RZDE01_00/symbols.txt | 35 +++++++++++++--- config/RZDE01_02/splits.txt | 36 ++++++++-------- config/RZDE01_02/symbols.txt | 6 +-- config/RZDJ01/splits.txt | 36 ++++++++-------- config/RZDJ01/symbols.txt | 6 +-- config/RZDP01/splits.txt | 36 ++++++++-------- config/RZDP01/symbols.txt | 6 +-- configure.py | 9 +++- include/JSystem/JKernel/JKRThread.h | 27 ++++++++++-- src/JSystem/JKernel/JKRHeap.cpp | 8 +++- src/JSystem/JKernel/JKRThread.cpp | 64 ++++++++++++++++++++++++++--- 12 files changed, 215 insertions(+), 90 deletions(-) diff --git a/config/RZDE01_00/splits.txt b/config/RZDE01_00/splits.txt index c3e02181c8..860b39f5f2 100644 --- a/config/RZDE01_00/splits.txt +++ b/config/RZDE01_00/splits.txt @@ -2555,21 +2555,22 @@ revolution/homebuttonLib/nw4hbm/ut/ut_TagProcessorBase.cpp: revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: .text start:0x802D92D0 end:0x802E1FB4 .ctors start:0x803CE398 end:0x803CE39C - .data start:0x8042B058 end:0x8042B680 + .data start:0x8042B058 end:0x8042B650 .bss start:0x804C2CE0 end:0x804C2CF8 - .sdata start:0x8053A158 end:0x8053A168 + .sdata start:0x8053A158 end:0x8053A160 .sbss start:0x8053B118 end:0x8053B128 .sdata2 start:0x8053FE60 end:0x8053FE78 JSystem/JKernel/JKRHeap.cpp: .text start:0x802E1FB4 end:0x802E2BEC - .data start:0x8042B680 end:0x8042B6E0 - .sdata start:0x8053A168 end:0x8053A198 + .data start:0x8042B650 end:0x8042B6E0 + .sdata start:0x8053A160 end:0x8053A170 .sbss start:0x8053B128 end:0x8053B158 JSystem/JKernel/JKRExpHeap.cpp: .text start:0x802E2BEC end:0x802E47B4 .data start:0x8042B6E0 end:0x8042BA88 + .sdata start:0x8053A170 end:0x8053A190 .sbss start:0x8053B158 end:0x8053B170 .sdata2 start:0x8053FE78 end:0x8053FE88 @@ -2589,17 +2590,18 @@ JSystem/JKernel/JKRDisposer.cpp: JSystem/JKernel/JKRThread.cpp: .text start:0x802E5294 end:0x802E5F9C .ctors start:0x803CE39C end:0x803CE3A0 - .data start:0x8042BCB0 end:0x8042BDEC + .data start:0x8042BCB0 end:0x8042BDC0 .bss start:0x804C2CF8 end:0x804C2D48 + .sdata start:0x8053A190 end:0x8053A198 .sbss start:0x8053B170 end:0x8053B190 .sdata2 start:0x8053FEA0 end:0x8053FEB0 JSystem/JKernel/JKRAram.cpp: .text start:0x802E5F9C end:0x802E6DBC .ctors start:0x803CE3A0 end:0x803CE3A4 - .data start:0x8042BDEC end:0x8042BE00 + .data start:0x8042BDC0 end:0x8042BE00 .bss start:0x804C2D48 end:0x804C2DA8 - .sdata start:0x8053A198 end:0x8053A1B4 + .sdata start:0x8053A198 end:0x8053A1A0 .sbss start:0x8053B190 end:0x8053B1D0 JSystem/JKernel/JKRAramHeap.cpp: @@ -2615,12 +2617,12 @@ JSystem/JKernel/JKRAramBlock.cpp: JSystem/JKernel/JKRAramPiece.cpp: .text start:0x802E7558 end:0x802E7AD4 .ctors start:0x803CE3A8 end:0x803CE3AC - .data start:0x8042BE20 end:0x8042BEB4 + .data start:0x8042BE20 end:0x8042BE88 .bss start:0x804C2DC0 end:0x804C2DF0 JSystem/JKernel/JKRAramStream.cpp: .text start:0x802E7AD4 end:0x802E804C - .data start:0x8042BEB4 end:0x8042BEC8 + .data start:0x8042BE88 end:0x8042BEC8 .bss start:0x804C2DF0 end:0x804C2E20 .sbss start:0x8053B1D0 end:0x8053B1E0 @@ -2629,6 +2631,7 @@ JSystem/JKernel/JKRFileLoader.cpp: .ctors start:0x803CE3AC end:0x803CE3B0 .data start:0x8042BEC8 end:0x8042BF08 .bss start:0x804C2E20 end:0x804C2E38 + .sdata start:0x8053A1A0 end:0x8053A1A8 .sbss start:0x8053B1E0 end:0x8053B1E8 JSystem/JKernel/JKRFileFinder.cpp: @@ -2638,10 +2641,11 @@ JSystem/JKernel/JKRFileFinder.cpp: JSystem/JKernel/JKRFileCache.cpp: .text start:0x802E8950 end:0x802E96E8 .data start:0x8042BF38 end:0x8042BF88 + .sdata start:0x8053A1A8 end:0x8053A1B0 JSystem/JKernel/JKRArchivePub.cpp: .text start:0x802E96E8 end:0x802EA1D8 - .data start:0x8042BF88 end:0x8042BFFC + .data start:0x8042BF88 end:0x8042BFD8 JSystem/JKernel/JKRArchivePri.cpp: .text start:0x802EA1D8 end:0x802EA928 @@ -2649,19 +2653,19 @@ JSystem/JKernel/JKRArchivePri.cpp: JSystem/JKernel/JKRMemArchive.cpp: .text start:0x802EA928 end:0x802EAFD8 - .data start:0x8042BFFC end:0x8042C078 + .data start:0x8042BFD8 end:0x8042C050 JSystem/JKernel/JKRAramArchive.cpp: .text start:0x802EAFD8 end:0x802EBC00 - .data start:0x8042C078 end:0x8042C0C8 + .data start:0x8042C050 end:0x8042C0C8 JSystem/JKernel/JKRDvdArchive.cpp: .text start:0x802EBC00 end:0x802EC74C - .data start:0x8042C0C8 end:0x8042C1C0 + .data start:0x8042C0C8 end:0x8042C188 JSystem/JKernel/JKRCompArchive.cpp: .text start:0x802EC74C end:0x802ED414 - .data start:0x8042C1C0 end:0x8042C238 + .data start:0x8042C188 end:0x8042C210 JSystem/JKernel/JKRFile.cpp: .text start:0x802ED414 end:0x802ED480 @@ -2669,7 +2673,7 @@ JSystem/JKernel/JKRFile.cpp: JSystem/JKernel/JKRDvdFile.cpp: .text start:0x802ED480 end:0x802EDAAC .ctors start:0x803CE3B0 end:0x803CE3B4 - .data start:0x8042C238 end:0x8042C280 + .data start:0x8042C210 end:0x8042C280 .bss start:0x804C2E38 end:0x804C2E50 JSystem/JKernel/JKRDvdRipper.cpp: @@ -2677,7 +2681,7 @@ JSystem/JKernel/JKRDvdRipper.cpp: .ctors start:0x803CE3B4 end:0x803CE3B8 .data start:0x8042C280 end:0x8042C2D8 .bss start:0x804C2E50 end:0x804C2E80 - .sdata start:0x8053A1B4 end:0x8053A1BC + .sdata start:0x8053A1B0 end:0x8053A1BC .sbss start:0x8053B1F0 end:0x8053B230 JSystem/JKernel/JKRDvdAramRipper.cpp: diff --git a/config/RZDE01_00/symbols.txt b/config/RZDE01_00/symbols.txt index bda5588b99..1a74c5830f 100644 --- a/config/RZDE01_00/symbols.txt +++ b/config/RZDE01_00/symbols.txt @@ -23608,8 +23608,33 @@ lbl_8042B650 = .data:0x8042B650; // type:object size:0x24 data:string lbl_8042B674 = .data:0x8042B674; // type:object size:0xC data:string __vt__7JKRHeap = .data:0x8042B680; // type:object size:0x60 scope:global align:4 ...data.0 = .data:0x8042B6E0; // type:label scope:local align:4 -lbl_8042B705 = .data:0x8042B705; // type:object size:0x14 data:string -lbl_8042B719 = .data:0x8042B719; // type:object size:0x30B +lbl_8042B6E0 = .data:0x8042B6E0; // type:object size:0x25 scope:local data:string +lbl_8042B705 = .data:0x8042B705; // type:object size:0x14 scope:local data:string +lbl_8042B719 = .data:0x8042B719; // type:object size:0xF scope:local data:string +lbl_8042B728 = .data:0x8042B728; // type:object size:0x24 scope:local data:string +lbl_8042B74C = .data:0x8042B74C; // type:object size:0xB scope:local data:string +lbl_8042B757 = .data:0x8042B757; // type:object size:0x2A scope:local data:string +lbl_8042B781 = .data:0x8042B781; // type:object size:0x2D scope:local data:string +lbl_8042B7AE = .data:0x8042B7AE; // type:object size:0x2B scope:local data:string +lbl_8042B7D9 = .data:0x8042B7D9; // type:object size:0x29 scope:local data:string +lbl_8042B802 = .data:0x8042B802; // type:object size:0x25 scope:local data:string +lbl_8042B827 = .data:0x8042B827; // type:object size:0x2D scope:local data:string +lbl_8042B854 = .data:0x8042B854; // type:object size:0x26 scope:local data:string +lbl_8042B87A = .data:0x8042B87A; // type:object size:0x37 scope:local data:string +lbl_8042B8B1 = .data:0x8042B8B1; // type:object size:0xF scope:local data:string +lbl_8042B8C0 = .data:0x8042B8C0; // type:object size:0x3A scope:local data:string +lbl_8042B8FA = .data:0x8042B8FA; // type:object size:0x25 scope:local data:string +lbl_8042B91F = .data:0x8042B91F; // type:object size:0xF scope:local data:string +lbl_8042B92E = .data:0x8042B92E; // type:object size:0x2A scope:local data:string +lbl_8042B958 = .data:0x8042B958; // type:object size:0x1C scope:local data:string +lbl_8042B974 = .data:0x8042B974; // type:object size:0x30 scope:local data:string +lbl_8042B9A4 = .data:0x8042B9A4; // type:object size:0x12 scope:local data:string +lbl_8042B9B6 = .data:0x8042B9B6; // type:object size:0x9 scope:local data:string +lbl_8042B9BF = .data:0x8042B9BF; // type:object size:0x1C scope:local data:string +lbl_8042B9DB = .data:0x8042B9DB; // type:object size:0x11 scope:local data:string +lbl_8042B9EC = .data:0x8042B9EC; // type:object size:0x12 scope:local data:string +lbl_8042B9FE = .data:0x8042B9FE; // type:object size:0x11 scope:local data:string +lbl_8042BA0F = .data:0x8042BA0F; // type:object size:0x15 scope:local data:string __vt__10JKRExpHeap = .data:0x8042BA24; // type:object size:0x60 scope:global align:4 ...data.0 = .data:0x8042BA88; // type:label scope:local align:4 lbl_8042BAB9 = .data:0x8042BAB9; // type:object size:0x31 data:string @@ -27755,10 +27780,10 @@ sMapBufOffset__Q26nw4hbm2db = .sdata:0x8053A130; // type:object size:0x4 scope:g @9920 = .sdata:0x8053A148; // type:object size:0x4 scope:local align:4 data:wstring @STRING@GetCharStrmReader__Q36nw4hbm2ut4FontCFv = .sdata:0x8053A14C; // type:object size:0x7 scope:local align:4 data:string mFormatBufferSize__Q36nw4hbm2ut17TextWriterBase = .sdata:0x8053A158; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8053A160 = .sdata:0x8053A160; // type:object size:0x1 data:byte +sDefaultFillFlag__7JKRHeap = .sdata:0x8053A160; // type:object size:0x1 data:byte lbl_8053A161 = .sdata:0x8053A161; // type:object size:0x7 data:string ARALT_AramStartAdr = .sdata:0x8053A168; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8053A16C = .sdata:0x8053A16C; // type:object size:0x3 data:string +@STRING@panic__12JUTExceptionFPCciPCc = .sdata:0x8053A16C; // type:object size:0x3 data:string lbl_8053A170 = .sdata:0x8053A170; // type:object size:0x7 data:string lbl_8053A177 = .sdata:0x8053A177; // type:object size:0x6 data:string lbl_8053A17D = .sdata:0x8053A17D; // type:object size:0x6 data:string @@ -27769,7 +27794,7 @@ lbl_8053A1A0 = .sdata:0x8053A1A0; // type:object size:0x2 data:string lbl_8053A1A2 = .sdata:0x8053A1A2; // type:object size:0x2 data:string lbl_8053A1A8 = .sdata:0x8053A1A8; // type:object size:0x2 data:string lbl_8053A1AA = .sdata:0x8053A1AA; // type:object size:0x4 data:string -lbl_8053A1B0 = .sdata:0x8053A1B0; // type:object size:0x1 data:byte +errorRetry__12JKRDvdRipper = .sdata:0x8053A1B0; // type:object size:0x1 data:byte sSZSBufferSize__12JKRDvdRipper = .sdata:0x8053A1B4; // type:object size:0x4 scope:global align:4 data:4byte lbl_8053A1B8 = .sdata:0x8053A1B8; // type:object size:0x1 data:byte sSZSBufferSize__16JKRDvdAramRipper = .sdata:0x8053A1BC; // type:object size:0x4 scope:global align:4 data:4byte diff --git a/config/RZDE01_02/splits.txt b/config/RZDE01_02/splits.txt index fd9550a70d..330c3a0006 100644 --- a/config/RZDE01_02/splits.txt +++ b/config/RZDE01_02/splits.txt @@ -2453,7 +2453,7 @@ revolution/homebuttonLib/nw4hbm/lyt/lyt_textBox.cpp: .text start:0x802C4164 end:0x802C5794 .ctors start:0x803B8DD4 end:0x803B8DD8 .data start:0x80411760 end:0x804117D8 - .sdata start:0x80520168 end:0x80520178 + .sdata start:0x80520168 end:0x80520170 .sbss start:0x805210F8 end:0x80521100 .sdata2 start:0x80525E68 end:0x80525E80 @@ -2513,7 +2513,7 @@ revolution/homebuttonLib/nw4hbm/ut/ut_ResFontBase.cpp: revolution/homebuttonLib/nw4hbm/ut/ut_TagProcessorBase.cpp: .text start:0x802CA798 end:0x802CAF58 - .data start:0x80412AF0 end:0x80412B48 + .data start:0x80412AF0 end:0x80412B18 .sdata2 start:0x80525ED8 end:0x80525EE0 revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: @@ -2525,13 +2525,14 @@ revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: JSystem/JKernel/JKRHeap.cpp: .text start:0x802CC984 end:0x802CD5BC - .data start:0x80412B48 end:0x80412BA8 - .sdata start:0x80520178 end:0x805201A8 + .data start:0x80412B18 end:0x80412BA8 + .sdata start:0x80520170 end:0x80520180 .sbss start:0x80521120 end:0x80521150 JSystem/JKernel/JKRExpHeap.cpp: .text start:0x802CD5BC end:0x802CF184 .data start:0x80412BA8 end:0x80412F50 + .sdata start:0x80520180 end:0x805201A0 .sbss start:0x80521150 end:0x80521168 .sdata2 start:0x80525EF8 end:0x80525F08 @@ -2551,17 +2552,18 @@ JSystem/JKernel/JKRDisposer.cpp: JSystem/JKernel/JKRThread.cpp: .text start:0x802CFC64 end:0x802D096C .ctors start:0x803B8DE0 end:0x803B8DE4 - .data start:0x80413178 end:0x804132B4 + .data start:0x80413178 end:0x80413288 .bss start:0x804A8D60 end:0x804A8DB0 + .sdata start:0x805201A0 end:0x805201A8 .sbss start:0x80521168 end:0x80521188 .sdata2 start:0x80525F20 end:0x80525F30 JSystem/JKernel/JKRAram.cpp: .text start:0x802D096C end:0x802D178C .ctors start:0x803B8DE4 end:0x803B8DE8 - .data start:0x804132B4 end:0x804132C8 + .data start:0x80413288 end:0x804132C8 .bss start:0x804A8DB0 end:0x804A8E10 - .sdata start:0x805201A8 end:0x805201C4 + .sdata start:0x805201A8 end:0x805201B0 .sbss start:0x80521188 end:0x805211C8 JSystem/JKernel/JKRAramHeap.cpp: @@ -2577,12 +2579,12 @@ JSystem/JKernel/JKRAramBlock.cpp: JSystem/JKernel/JKRAramPiece.cpp: .text start:0x802D1F28 end:0x802D24A4 .ctors start:0x803B8DEC end:0x803B8DF0 - .data start:0x804132E8 end:0x8041337C + .data start:0x804132E8 end:0x80413350 .bss start:0x804A8E28 end:0x804A8E58 JSystem/JKernel/JKRAramStream.cpp: .text start:0x802D24A4 end:0x802D2A1C - .data start:0x8041337C end:0x80413390 + .data start:0x80413350 end:0x80413390 .bss start:0x804A8E58 end:0x804A8E88 .sbss start:0x805211C8 end:0x805211D8 @@ -2591,6 +2593,7 @@ JSystem/JKernel/JKRFileLoader.cpp: .ctors start:0x803B8DF0 end:0x803B8DF4 .data start:0x80413390 end:0x804133D0 .bss start:0x804A8E88 end:0x804A8EA0 + .sdata start:0x805201B0 end:0x805201B8 .sbss start:0x805211D8 end:0x805211E0 JSystem/JKernel/JKRFileFinder.cpp: @@ -2600,10 +2603,11 @@ JSystem/JKernel/JKRFileFinder.cpp: JSystem/JKernel/JKRFileCache.cpp: .text start:0x802D3320 end:0x802D40B8 .data start:0x80413400 end:0x80413450 + .sdata start:0x805201B8 end:0x805201C0 JSystem/JKernel/JKRArchivePub.cpp: .text start:0x802D40B8 end:0x802D4BA8 - .data start:0x80413450 end:0x804134C4 + .data start:0x80413450 end:0x804134A0 JSystem/JKernel/JKRArchivePri.cpp: .text start:0x802D4BA8 end:0x802D52F8 @@ -2611,19 +2615,19 @@ JSystem/JKernel/JKRArchivePri.cpp: JSystem/JKernel/JKRMemArchive.cpp: .text start:0x802D52F8 end:0x802D59A8 - .data start:0x804134C4 end:0x80413540 + .data start:0x804134A0 end:0x80413518 JSystem/JKernel/JKRAramArchive.cpp: .text start:0x802D59A8 end:0x802D65D0 - .data start:0x80413540 end:0x80413590 + .data start:0x80413518 end:0x80413590 JSystem/JKernel/JKRDvdArchive.cpp: .text start:0x802D65D0 end:0x802D711C - .data start:0x80413590 end:0x80413688 + .data start:0x80413590 end:0x80413650 JSystem/JKernel/JKRCompArchive.cpp: .text start:0x802D711C end:0x802D7DE4 - .data start:0x80413688 end:0x80413700 + .data start:0x80413650 end:0x804136D8 JSystem/JKernel/JKRFile.cpp: .text start:0x802D7DE4 end:0x802D7E50 @@ -2631,7 +2635,7 @@ JSystem/JKernel/JKRFile.cpp: JSystem/JKernel/JKRDvdFile.cpp: .text start:0x802D7E50 end:0x802D847C .ctors start:0x803B8DF4 end:0x803B8DF8 - .data start:0x80413700 end:0x80413748 + .data start:0x804136D8 end:0x80413748 .bss start:0x804A8EA0 end:0x804A8EB8 JSystem/JKernel/JKRDvdRipper.cpp: @@ -2639,7 +2643,7 @@ JSystem/JKernel/JKRDvdRipper.cpp: .ctors start:0x803B8DF8 end:0x803B8DFC .data start:0x80413748 end:0x804137A0 .bss start:0x804A8EB8 end:0x804A8EE8 - .sdata start:0x805201C4 end:0x805201CC + .sdata start:0x805201C0 end:0x805201CC .sbss start:0x805211E8 end:0x80521228 JSystem/JKernel/JKRDvdAramRipper.cpp: diff --git a/config/RZDE01_02/symbols.txt b/config/RZDE01_02/symbols.txt index 8d6aea7ca7..38a3292d1c 100644 --- a/config/RZDE01_02/symbols.txt +++ b/config/RZDE01_02/symbols.txt @@ -27304,10 +27304,10 @@ scCursorSRotPaneName__Q210homebutton10HomeButton = .sdata:0x805200C0; // type:ob @3379 = .sdata:0x80520160; // type:object size:0x2 scope:local align:4 data:string @3380 = .sdata:0x80520164; // type:object size:0x3 scope:local align:4 data:string @9572 = .sdata:0x80520168; // type:object size:0x4 scope:local align:4 data:wstring -lbl_80520170 = .sdata:0x80520170; // type:object size:0x1 data:byte +sDefaultFillFlag__7JKRHeap = .sdata:0x80520170; // type:object size:0x1 data:byte lbl_80520171 = .sdata:0x80520171; // type:object size:0x7 data:string ARALT_AramStartAdr = .sdata:0x80520178; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8052017C = .sdata:0x8052017C; // type:object size:0x3 data:string +@STRING@panic__12JUTExceptionFPCciPCc = .sdata:0x8052017C; // type:object size:0x3 data:string lbl_80520180 = .sdata:0x80520180; // type:object size:0x7 data:string lbl_80520187 = .sdata:0x80520187; // type:object size:0x6 data:string lbl_8052018D = .sdata:0x8052018D; // type:object size:0x6 data:string @@ -27318,7 +27318,7 @@ lbl_805201B0 = .sdata:0x805201B0; // type:object size:0x2 data:string lbl_805201B2 = .sdata:0x805201B2; // type:object size:0x2 data:string lbl_805201B8 = .sdata:0x805201B8; // type:object size:0x2 data:string lbl_805201BA = .sdata:0x805201BA; // type:object size:0x4 data:string -lbl_805201C0 = .sdata:0x805201C0; // type:object size:0x1 data:byte +errorRetry__12JKRDvdRipper = .sdata:0x805201C0; // type:object size:0x1 data:byte sSZSBufferSize__12JKRDvdRipper = .sdata:0x805201C4; // type:object size:0x4 scope:global align:4 data:4byte lbl_805201C8 = .sdata:0x805201C8; // type:object size:0x1 data:byte sSZSBufferSize__16JKRDvdAramRipper = .sdata:0x805201CC; // type:object size:0x4 scope:global align:4 data:4byte diff --git a/config/RZDJ01/splits.txt b/config/RZDJ01/splits.txt index 0e7e729f00..904279e8df 100644 --- a/config/RZDJ01/splits.txt +++ b/config/RZDJ01/splits.txt @@ -2453,7 +2453,7 @@ revolution/homebuttonLib/nw4hbm/lyt/lyt_textBox.cpp: .text start:0x802C5C84 end:0x802C72B4 .ctors start:0x803BA894 end:0x803BA898 .data start:0x8040F5E0 end:0x8040F658 - .sdata start:0x8051DFD8 end:0x8051DFE8 + .sdata start:0x8051DFD8 end:0x8051DFE0 .sbss start:0x8051EF68 end:0x8051EF70 .sdata2 start:0x80523CC0 end:0x80523CD8 @@ -2513,7 +2513,7 @@ revolution/homebuttonLib/nw4hbm/ut/ut_ResFontBase.cpp: revolution/homebuttonLib/nw4hbm/ut/ut_TagProcessorBase.cpp: .text start:0x802CC2B8 end:0x802CCA78 - .data start:0x80410970 end:0x804109C8 + .data start:0x80410970 end:0x80410998 .sdata2 start:0x80523D30 end:0x80523D38 revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: @@ -2525,13 +2525,14 @@ revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: JSystem/JKernel/JKRHeap.cpp: .text start:0x802CE4A4 end:0x802CF0DC - .data start:0x804109C8 end:0x80410A28 - .sdata start:0x8051DFE8 end:0x8051E018 + .data start:0x80410998 end:0x80410A28 + .sdata start:0x8051DFE0 end:0x8051DFF0 .sbss start:0x8051EF90 end:0x8051EFC0 JSystem/JKernel/JKRExpHeap.cpp: .text start:0x802CF0DC end:0x802D0CA4 .data start:0x80410A28 end:0x80410DD0 + .sdata start:0x8051DFF0 end:0x8051E010 .sbss start:0x8051EFC0 end:0x8051EFD8 .sdata2 start:0x80523D50 end:0x80523D60 @@ -2551,17 +2552,18 @@ JSystem/JKernel/JKRDisposer.cpp: JSystem/JKernel/JKRThread.cpp: .text start:0x802D1784 end:0x802D248C .ctors start:0x803BA8A0 end:0x803BA8A4 - .data start:0x80410FF8 end:0x80411134 + .data start:0x80410FF8 end:0x80411108 .bss start:0x804A6BE0 end:0x804A6C30 + .sdata start:0x8051E010 end:0x8051E018 .sbss start:0x8051EFD8 end:0x8051EFF8 .sdata2 start:0x80523D78 end:0x80523D88 JSystem/JKernel/JKRAram.cpp: .text start:0x802D248C end:0x802D32AC .ctors start:0x803BA8A4 end:0x803BA8A8 - .data start:0x80411134 end:0x80411148 + .data start:0x80411108 end:0x80411148 .bss start:0x804A6C30 end:0x804A6C90 - .sdata start:0x8051E018 end:0x8051E034 + .sdata start:0x8051E018 end:0x8051E020 .sbss start:0x8051EFF8 end:0x8051F038 JSystem/JKernel/JKRAramHeap.cpp: @@ -2577,12 +2579,12 @@ JSystem/JKernel/JKRAramBlock.cpp: JSystem/JKernel/JKRAramPiece.cpp: .text start:0x802D3A48 end:0x802D3FC4 .ctors start:0x803BA8AC end:0x803BA8B0 - .data start:0x80411168 end:0x804111FC + .data start:0x80411168 end:0x804111D0 .bss start:0x804A6CA8 end:0x804A6CD8 JSystem/JKernel/JKRAramStream.cpp: .text start:0x802D3FC4 end:0x802D453C - .data start:0x804111FC end:0x80411210 + .data start:0x804111D0 end:0x80411210 .bss start:0x804A6CD8 end:0x804A6D08 .sbss start:0x8051F038 end:0x8051F048 @@ -2591,6 +2593,7 @@ JSystem/JKernel/JKRFileLoader.cpp: .ctors start:0x803BA8B0 end:0x803BA8B4 .data start:0x80411210 end:0x80411250 .bss start:0x804A6D08 end:0x804A6D20 + .sdata start:0x8051E020 end:0x8051E028 .sbss start:0x8051F048 end:0x8051F050 JSystem/JKernel/JKRFileFinder.cpp: @@ -2600,10 +2603,11 @@ JSystem/JKernel/JKRFileFinder.cpp: JSystem/JKernel/JKRFileCache.cpp: .text start:0x802D4E40 end:0x802D5BD8 .data start:0x80411280 end:0x804112D0 + .sdata start:0x8051E028 end:0x8051E030 JSystem/JKernel/JKRArchivePub.cpp: .text start:0x802D5BD8 end:0x802D66C8 - .data start:0x804112D0 end:0x80411344 + .data start:0x804112D0 end:0x80411320 JSystem/JKernel/JKRArchivePri.cpp: .text start:0x802D66C8 end:0x802D6E18 @@ -2611,19 +2615,19 @@ JSystem/JKernel/JKRArchivePri.cpp: JSystem/JKernel/JKRMemArchive.cpp: .text start:0x802D6E18 end:0x802D74C8 - .data start:0x80411344 end:0x804113C0 + .data start:0x80411320 end:0x80411398 JSystem/JKernel/JKRAramArchive.cpp: .text start:0x802D74C8 end:0x802D80F0 - .data start:0x804113C0 end:0x80411410 + .data start:0x80411398 end:0x80411410 JSystem/JKernel/JKRDvdArchive.cpp: .text start:0x802D80F0 end:0x802D8C3C - .data start:0x80411410 end:0x80411508 + .data start:0x80411410 end:0x804114D0 JSystem/JKernel/JKRCompArchive.cpp: .text start:0x802D8C3C end:0x802D9904 - .data start:0x80411508 end:0x80411580 + .data start:0x804114D0 end:0x80411558 JSystem/JKernel/JKRFile.cpp: .text start:0x802D9904 end:0x802D9970 @@ -2631,7 +2635,7 @@ JSystem/JKernel/JKRFile.cpp: JSystem/JKernel/JKRDvdFile.cpp: .text start:0x802D9970 end:0x802D9F9C .ctors start:0x803BA8B4 end:0x803BA8B8 - .data start:0x80411580 end:0x804115C8 + .data start:0x80411558 end:0x804115C8 .bss start:0x804A6D20 end:0x804A6D38 JSystem/JKernel/JKRDvdRipper.cpp: @@ -2639,7 +2643,7 @@ JSystem/JKernel/JKRDvdRipper.cpp: .ctors start:0x803BA8B8 end:0x803BA8BC .data start:0x804115C8 end:0x80411620 .bss start:0x804A6D38 end:0x804A6D68 - .sdata start:0x8051E034 end:0x8051E03C + .sdata start:0x8051E030 end:0x8051E03C .sbss start:0x8051F058 end:0x8051F098 JSystem/JKernel/JKRDvdAramRipper.cpp: diff --git a/config/RZDJ01/symbols.txt b/config/RZDJ01/symbols.txt index 25a002b8e0..f20807e0ab 100644 --- a/config/RZDJ01/symbols.txt +++ b/config/RZDJ01/symbols.txt @@ -27310,10 +27310,10 @@ scCursorSRotPaneName__Q210homebutton10HomeButton = .sdata:0x8051DF30; // type:ob @3379 = .sdata:0x8051DFD0; // type:object size:0x2 scope:local align:4 data:string @3380 = .sdata:0x8051DFD4; // type:object size:0x3 scope:local align:4 data:string @9572 = .sdata:0x8051DFD8; // type:object size:0x4 scope:local align:4 data:wstring -lbl_8051DFE0 = .sdata:0x8051DFE0; // type:object size:0x1 data:byte +sDefaultFillFlag__7JKRHeap = .sdata:0x8051DFE0; // type:object size:0x1 data:byte lbl_8051DFE1 = .sdata:0x8051DFE1; // type:object size:0x7 data:string ARALT_AramStartAdr = .sdata:0x8051DFE8; // type:object size:0x4 scope:global align:4 data:4byte -lbl_8051DFEC = .sdata:0x8051DFEC; // type:object size:0x3 data:string +@STRING@panic__12JUTExceptionFPCciPCc = .sdata:0x8051DFEC; // type:object size:0x3 data:string lbl_8051DFF0 = .sdata:0x8051DFF0; // type:object size:0x7 data:string lbl_8051DFF7 = .sdata:0x8051DFF7; // type:object size:0x6 data:string lbl_8051DFFD = .sdata:0x8051DFFD; // type:object size:0x6 data:string @@ -27324,7 +27324,7 @@ lbl_8051E020 = .sdata:0x8051E020; // type:object size:0x2 data:string lbl_8051E022 = .sdata:0x8051E022; // type:object size:0x2 data:string lbl_8051E028 = .sdata:0x8051E028; // type:object size:0x2 data:string lbl_8051E02A = .sdata:0x8051E02A; // type:object size:0x4 data:string -lbl_8051E030 = .sdata:0x8051E030; // type:object size:0x1 data:byte +errorRetry__12JKRDvdRipper = .sdata:0x8051E030; // type:object size:0x1 data:byte sSZSBufferSize__12JKRDvdRipper = .sdata:0x8051E034; // type:object size:0x4 scope:global align:4 data:4byte lbl_8051E038 = .sdata:0x8051E038; // type:object size:0x1 data:byte sSZSBufferSize__16JKRDvdAramRipper = .sdata:0x8051E03C; // type:object size:0x4 scope:global align:4 data:4byte diff --git a/config/RZDP01/splits.txt b/config/RZDP01/splits.txt index 58492fa089..98b883e9d0 100644 --- a/config/RZDP01/splits.txt +++ b/config/RZDP01/splits.txt @@ -2450,7 +2450,7 @@ revolution/homebuttonLib/nw4hbm/lyt/lyt_textBox.cpp: .text start:0x802C4594 end:0x802C5BC4 .ctors start:0x803B9254 end:0x803B9258 .data start:0x80412070 end:0x804120E8 - .sdata start:0x80520910 end:0x80520920 + .sdata start:0x80520910 end:0x80520918 .sbss start:0x805218B8 end:0x805218C0 .sdata2 start:0x80526638 end:0x80526650 @@ -2510,7 +2510,7 @@ revolution/homebuttonLib/nw4hbm/ut/ut_ResFontBase.cpp: revolution/homebuttonLib/nw4hbm/ut/ut_TagProcessorBase.cpp: .text start:0x802CABC8 end:0x802CB388 - .data start:0x80413400 end:0x80413458 + .data start:0x80413400 end:0x80413428 .sdata2 start:0x805266A8 end:0x805266B0 revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: @@ -2522,13 +2522,14 @@ revolution/homebuttonLib/nw4hbm/ut/ut_TextWriterBase.cpp: JSystem/JKernel/JKRHeap.cpp: .text start:0x802CCDB4 end:0x802CD9EC - .data start:0x80413458 end:0x804134B8 - .sdata start:0x80520920 end:0x80520950 + .data start:0x80413428 end:0x804134B8 + .sdata start:0x80520918 end:0x80520928 .sbss start:0x805218E0 end:0x80521910 JSystem/JKernel/JKRExpHeap.cpp: .text start:0x802CD9EC end:0x802CF5B4 .data start:0x804134B8 end:0x80413860 + .sdata start:0x80520928 end:0x80520948 .sbss start:0x80521910 end:0x80521928 .sdata2 start:0x805266C8 end:0x805266D8 @@ -2548,17 +2549,18 @@ JSystem/JKernel/JKRDisposer.cpp: JSystem/JKernel/JKRThread.cpp: .text start:0x802D0094 end:0x802D0D9C .ctors start:0x803B9260 end:0x803B9264 - .data start:0x80413A88 end:0x80413BC4 + .data start:0x80413A88 end:0x80413B98 .bss start:0x804A9680 end:0x804A96D0 + .sdata start:0x80520948 end:0x80520950 .sbss start:0x80521928 end:0x80521948 .sdata2 start:0x805266F0 end:0x80526700 JSystem/JKernel/JKRAram.cpp: .text start:0x802D0D9C end:0x802D1BBC .ctors start:0x803B9264 end:0x803B9268 - .data start:0x80413BC4 end:0x80413BD8 + .data start:0x80413B98 end:0x80413BD8 .bss start:0x804A96D0 end:0x804A9730 - .sdata start:0x80520950 end:0x8052096C + .sdata start:0x80520950 end:0x80520958 .sbss start:0x80521948 end:0x80521988 JSystem/JKernel/JKRAramHeap.cpp: @@ -2574,12 +2576,12 @@ JSystem/JKernel/JKRAramBlock.cpp: JSystem/JKernel/JKRAramPiece.cpp: .text start:0x802D2358 end:0x802D28D4 .ctors start:0x803B926C end:0x803B9270 - .data start:0x80413BF8 end:0x80413C8C + .data start:0x80413BF8 end:0x80413C60 .bss start:0x804A9748 end:0x804A9778 JSystem/JKernel/JKRAramStream.cpp: .text start:0x802D28D4 end:0x802D2E4C - .data start:0x80413C8C end:0x80413CA0 + .data start:0x80413C60 end:0x80413CA0 .bss start:0x804A9778 end:0x804A97A8 .sbss start:0x80521988 end:0x80521998 @@ -2588,6 +2590,7 @@ JSystem/JKernel/JKRFileLoader.cpp: .ctors start:0x803B9270 end:0x803B9274 .data start:0x80413CA0 end:0x80413CE0 .bss start:0x804A97A8 end:0x804A97C0 + .sdata start:0x80520958 end:0x80520960 .sbss start:0x80521998 end:0x805219A0 JSystem/JKernel/JKRFileFinder.cpp: @@ -2597,10 +2600,11 @@ JSystem/JKernel/JKRFileFinder.cpp: JSystem/JKernel/JKRFileCache.cpp: .text start:0x802D3750 end:0x802D44E8 .data start:0x80413D10 end:0x80413D60 + .sdata start:0x80520960 end:0x80520968 JSystem/JKernel/JKRArchivePub.cpp: .text start:0x802D44E8 end:0x802D4FD8 - .data start:0x80413D60 end:0x80413DD4 + .data start:0x80413D60 end:0x80413DB0 JSystem/JKernel/JKRArchivePri.cpp: .text start:0x802D4FD8 end:0x802D5728 @@ -2608,19 +2612,19 @@ JSystem/JKernel/JKRArchivePri.cpp: JSystem/JKernel/JKRMemArchive.cpp: .text start:0x802D5728 end:0x802D5DD8 - .data start:0x80413DD4 end:0x80413E50 + .data start:0x80413DB0 end:0x80413E28 JSystem/JKernel/JKRAramArchive.cpp: .text start:0x802D5DD8 end:0x802D6A00 - .data start:0x80413E50 end:0x80413EA0 + .data start:0x80413E28 end:0x80413EA0 JSystem/JKernel/JKRDvdArchive.cpp: .text start:0x802D6A00 end:0x802D754C - .data start:0x80413EA0 end:0x80413F98 + .data start:0x80413EA0 end:0x80413F60 JSystem/JKernel/JKRCompArchive.cpp: .text start:0x802D754C end:0x802D8214 - .data start:0x80413F98 end:0x80414010 + .data start:0x80413F60 end:0x80413FE8 JSystem/JKernel/JKRFile.cpp: .text start:0x802D8214 end:0x802D8280 @@ -2628,7 +2632,7 @@ JSystem/JKernel/JKRFile.cpp: JSystem/JKernel/JKRDvdFile.cpp: .text start:0x802D8280 end:0x802D88AC .ctors start:0x803B9274 end:0x803B9278 - .data start:0x80414010 end:0x80414058 + .data start:0x80413FE8 end:0x80414058 .bss start:0x804A97C0 end:0x804A97D8 JSystem/JKernel/JKRDvdRipper.cpp: @@ -2636,7 +2640,7 @@ JSystem/JKernel/JKRDvdRipper.cpp: .ctors start:0x803B9278 end:0x803B927C .data start:0x80414058 end:0x804140B0 .bss start:0x804A97D8 end:0x804A9808 - .sdata start:0x8052096C end:0x80520974 + .sdata start:0x80520968 end:0x80520974 .sbss start:0x805219A8 end:0x805219E8 JSystem/JKernel/JKRDvdAramRipper.cpp: diff --git a/config/RZDP01/symbols.txt b/config/RZDP01/symbols.txt index e0c400af98..6d7c6341e7 100644 --- a/config/RZDP01/symbols.txt +++ b/config/RZDP01/symbols.txt @@ -27195,10 +27195,10 @@ scCursorSRotPaneName__Q210homebutton10HomeButton = .sdata:0x80520868; // type:ob @3379 = .sdata:0x80520908; // type:object size:0x2 scope:local align:4 data:string @3380 = .sdata:0x8052090C; // type:object size:0x3 scope:local align:4 data:string @9572 = .sdata:0x80520910; // type:object size:0x4 scope:local align:4 data:wstring -lbl_80520918 = .sdata:0x80520918; // type:object size:0x1 data:byte +sDefaultFillFlag__7JKRHeap = .sdata:0x80520918; // type:object size:0x1 data:byte lbl_80520919 = .sdata:0x80520919; // type:object size:0x7 data:string ARALT_AramStartAdr = .sdata:0x80520920; // type:object size:0x4 scope:global align:4 data:4byte -lbl_80520924 = .sdata:0x80520924; // type:object size:0x3 data:string +@STRING@panic__12JUTExceptionFPCciPCc = .sdata:0x80520924; // type:object size:0x3 data:string lbl_80520928 = .sdata:0x80520928; // type:object size:0x7 data:string lbl_8052092F = .sdata:0x8052092F; // type:object size:0x6 data:string lbl_80520935 = .sdata:0x80520935; // type:object size:0x6 data:string @@ -27209,7 +27209,7 @@ lbl_80520958 = .sdata:0x80520958; // type:object size:0x2 data:string lbl_8052095A = .sdata:0x8052095A; // type:object size:0x2 data:string lbl_80520960 = .sdata:0x80520960; // type:object size:0x2 data:string lbl_80520962 = .sdata:0x80520962; // type:object size:0x4 data:string -lbl_80520968 = .sdata:0x80520968; // type:object size:0x1 data:byte +errorRetry__12JKRDvdRipper = .sdata:0x80520968; // type:object size:0x1 data:byte sSZSBufferSize__12JKRDvdRipper = .sdata:0x8052096C; // type:object size:0x4 scope:global align:4 data:4byte lbl_80520970 = .sdata:0x80520970; // type:object size:0x1 data:byte sSZSBufferSize__16JKRDvdAramRipper = .sdata:0x80520974; // type:object size:0x4 scope:global align:4 data:4byte diff --git a/configure.py b/configure.py index ad863d7273..dae7c63e18 100755 --- a/configure.py +++ b/configure.py @@ -397,6 +397,13 @@ if config.version != "ShieldD": if config.version in ["RZDE01_00", "RZDE01_02", "RZDP01", "RZDJ01"]: cflags_framework.extend(["-DSDK_SEP2006"]) +cflags_jsystem = [ + *cflags_framework +] + +if config.version in ["RZDE01_00", "RZDE01_02", "RZDP01", "RZDJ01"]: + cflags_jsystem.extend(["-RTTI off"]) + # REL flags cflags_rel = [ @@ -505,7 +512,7 @@ def JSystemLib(lib_name: str, objects: List[Object], progress_category: str="thi return { "lib": lib_name, "mw_version": MWVersion(config.version), - "cflags": [*cflags_framework], + "cflags": [*cflags_jsystem], "progress_category": progress_category, "objects": objects, } diff --git a/include/JSystem/JKernel/JKRThread.h b/include/JSystem/JKernel/JKRThread.h index 9fb515fe7b..027d6640e4 100644 --- a/include/JSystem/JKernel/JKRThread.h +++ b/include/JSystem/JKernel/JKRThread.h @@ -65,7 +65,7 @@ public: JKRThread(OSThread* thread, int message_count); virtual ~JKRThread(); - /* vt[03] */ virtual void* run(); + /* vt[03] */ virtual void* run() { return NULL; } void setCommon_mesgQueue(JKRHeap* heap, int message_count); void setCommon_heapSpecified(JKRHeap* heap, u32 stack_size, int param_3); @@ -134,6 +134,15 @@ public: // static u8 sThreadList[12]; }; +class JKRIdleThread : public JKRThread { +public: + virtual void destroy() {} + virtual ~JKRIdleThread() { sThread = NULL; } + virtual void* run() { while (true); } + + static void* sThread; +}; + typedef void (*JKRThreadSwitch_PreCallback)(OSThread* current, OSThread* next); typedef void (*JKRThreadSwitch_PostCallback)(OSThread* current, OSThread* next); @@ -145,8 +154,8 @@ class JKRThreadSwitch { public: JKRThreadSwitch(JKRHeap*); virtual void draw(JKRThreadName_* param_1, JUTConsole* param_2); - virtual void draw(JKRThreadName_* param_1); - virtual ~JKRThreadSwitch(); + virtual void draw(JKRThreadName_* thread_name_list) { draw(thread_name_list, NULL); } + virtual ~JKRThreadSwitch() {} static JKRThreadSwitch* createManager(JKRHeap* heap); @@ -176,9 +185,19 @@ private: /* 0x24 */ u32 field_0x24; }; -struct JKRTask { +class JKRTask : public JKRThread { +public: + virtual ~JKRTask(); + virtual void* run(); + + int check(); + static JSUList sTaskList; static u8 sEndMesgQueue[32]; + + /* 0x7C */ JSULink mTaskLink; + /* 0x8C */ u8 field_0x8c[0x94 - 0x8C]; + /* 0x94 */ OSMessageQueue* field_0x94; }; #endif /* JKRTHREAD_H */ diff --git a/src/JSystem/JKernel/JKRHeap.cpp b/src/JSystem/JKernel/JKRHeap.cpp index e4337db174..720166455a 100644 --- a/src/JSystem/JKernel/JKRHeap.cpp +++ b/src/JSystem/JKernel/JKRHeap.cpp @@ -95,7 +95,9 @@ JKRHeap::JKRFreeCallback JKRHeap::sFreeCallback; bool JKRHeap::initArena(char** memory, u32* size, int maxHeaps) { void* arenaLo = OSGetArenaLo(); void* arenaHi = OSGetArenaHi(); - OS_REPORT("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi); +#if !PLATFORM_GCN + OSReport("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi); +#endif if (arenaLo == arenaHi) return false; @@ -123,7 +125,9 @@ bool JKRHeap::initArena(char** memory, u32* size, int maxHeaps) { bool JKRHeap::initArena2(char** memory, u32* size, int maxHeaps) { void* arenaLo = OSGetMEM2ArenaLo(); void* arenaHi = OSGetMEM2ArenaHi(); - OS_REPORT("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi); +#if !PLATFORM_GCN + OSReport("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi); +#endif if (arenaLo == arenaHi) { return false; } diff --git a/src/JSystem/JKernel/JKRThread.cpp b/src/JSystem/JKernel/JKRThread.cpp index fa38270a2d..918f1012fc 100644 --- a/src/JSystem/JKernel/JKRThread.cpp +++ b/src/JSystem/JKernel/JKRThread.cpp @@ -9,6 +9,8 @@ JSUList JKRThread::sThreadList(0); +void* JKRIdleThread::sThread; + JKRThreadSwitch* JKRThreadSwitch::sManager; u32 JKRThreadSwitch::sTotalCount; @@ -99,6 +101,12 @@ JKRThread* JKRThread::searchThread(OSThread* thread) { return NULL; } +static void dummy1(JKRThread* thread, JKRThread::TLoad* load) { + load->getId(); + load->isValid(); + thread->getLoadInfo(); +} + JKRThreadSwitch::JKRThreadSwitch(JKRHeap* param_0) { mHeap = param_0; OSSetSwitchThreadCallback(JKRThreadSwitch::callback); @@ -123,6 +131,11 @@ JKRThreadSwitch* JKRThreadSwitch::createManager(JKRHeap* heap) { return sManager; } +static void dummy2(JKRThread::TLoad* load) { + load->setValid(false); + load->setId(0); +} + JKRThread* JKRThreadSwitch::enter(JKRThread* thread, int thread_id) { if (!thread) { return NULL; @@ -210,6 +223,10 @@ void JKRThreadSwitch::callback(OSThread* current, OSThread* next) { } } +void dummy3(JKRThreadSwitch* threadSw, JKRThreadName_* name) { + threadSw->draw(name); +} + void JKRThreadSwitch::draw(JKRThreadName_* thread_name_list, JUTConsole* console) { const char* print_0 = " total: switch:%3d time:%d(%df)\n"; const char* print_1 = " -------------------------------------\n"; @@ -263,15 +280,52 @@ void JKRThreadSwitch::draw(JKRThreadName_* thread_name_list, JUTConsole* console } } -void* JKRThread::run() { - return NULL; +static void dummy4(JKRTask* thread, JSULink* link) { + thread->getStack(); + delete link; } -void JKRThreadSwitch::draw(JKRThreadName_* thread_name_list) { - draw(thread_name_list, NULL); +JKRTask::~JKRTask() { + sTaskList.remove(&mTaskLink); } -JKRThreadSwitch::~JKRThreadSwitch() {} +void* JKRTask::run() { + struct TaskMessage { + void (*field_0x0)(int); + int field_0x4; + void* field_0x8; + }; + OSInitFastCast(); + while (true) { + TaskMessage* msg = (TaskMessage*)waitMessageBlock(); + if (msg->field_0x0) { + msg->field_0x0(msg->field_0x4); + check(); + if (field_0x94) { + OSSendMessage(field_0x94, msg->field_0x8, OS_MESSAGE_NOBLOCK); + } + } + msg->field_0x0 = NULL; + } +} + +int JKRTask::check() { + int result = 0; + u8* ptr = (u8*)JKRThread::getStack(); + JUT_ASSERT(1033, *((u32*)ptr) == 0xDEADBABE); + ptr += 4; + result += 4; + while (*ptr++ == 0xDE) { result++; } + return result; +} + +#if !PLATFORM_GCN +static void dummy(JKRIdleThread* thread) { + thread->run(); + delete thread; + thread->destroy(); +} +#endif #pragma push #pragma force_active on