From be02f9b313e95b5650ca29207381e07b0bbad262 Mon Sep 17 00:00:00 2001 From: meepingsnesroms Date: Thu, 5 Dec 2019 23:56:00 -0800 Subject: [PATCH] Log all attempts at setting the PC, capture where the CPU idle error occurs --- bugs/idleModeStackTrace.txt | 355 ++++++++++++++++++++++++++++++++ qtBuildSystem/Mu/emuwrapper.cpp | 2 +- src/armv5te/uArm/CPU_2.c | 31 ++- 3 files changed, 379 insertions(+), 9 deletions(-) create mode 100644 bugs/idleModeStackTrace.txt diff --git a/bugs/idleModeStackTrace.txt b/bugs/idleModeStackTrace.txt new file mode 100644 index 0000000..8f1af44 --- /dev/null +++ b/bugs/idleModeStackTrace.txt @@ -0,0 +1,355 @@ +Using uARM CPU core!(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 2 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0004, value:0x038FF000(printed 1 times) +Set speed modeMISSING "\n"(printed 1 times) +Someone tried to set processor power mode (cp14 reg7) to 0x00000003, PC:0x000003F8(printed 1 times) +Unimplimented PXA260 GPIO 36 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 43 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 45 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 47 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 48 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 51 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 52 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 53 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 57 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 78 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 79 set:1, PC:0x0000051C(printed 1 times) +Unimplimented PXA260 GPIO 43 set:1, PC:0x0000053C(printed 1 times) +Unimplimented PXA260 GPIO 45 set:4, PC:0x0000053C(printed 1 times) +Unimplimented PXA260 GPIO 47 set:3, PC:0x0000053C(printed 1 times) +Unimplimented PXA260 GPIO 78 set:4, PC:0x0000053C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0008(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0008, value:0x23DA23D2(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0008(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x000C, value:0x3FF1A441(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x000C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0010, value:0x7FF17FF1(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0010(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0014, value:0x00000001(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0014(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0028, value:0x00010504(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0028(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x002C, value:0x00010504(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x002C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0030, value:0x00010504(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0030(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0034, value:0x00010504(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0034(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0038, value:0x00004715(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0038(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x003C, value:0x00004715(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x003C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0004(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0004, value:0x00000018(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x001C, value:0x00000000(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0004(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0004, value:0x00010018(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0004(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0004, value:0x00010018(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0004, value:0x00018018(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0000, value:0x00000AC8(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0000, value:0x00000AC9(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0040, value:0x00000000(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x0004(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x0004, value:0x00118018(printed 1 times) +Turned MMU on(printed 1 times) +Unknown coprocessor instruction MCR 0E071F16(printed 2 times) +Unknown coprocessor instruction MCR 0E071FB2(printed 1024 times) +Unimplimented PXA260 GPIO 52 set:3, PC:0x00001128(printed 1 times) +Unimplimented PXA260 GPIO 52 set:3, PC:0x00001154(printed 1 times) +Unknown coprocessor instruction MCR 0E071FB2(printed 2048 times) +Unimplimented PXA260 GPIO 36 set:4, PC:0x2000636C(printed 1 times) +Unimplemented TPS65010 register write, address:0x08, value:0x80, PC:0x20005B30(printed 10 times) +Unimplemented TPS65010 register write, address:0x0D, value:0x00, PC:0x20005B30(printed 10 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x000C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x000C, value:0x3FF187A9(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x000C(printed 1 times) +Unimplimented PXA260 GPIO 78 set:4, PC:0x2000631C(printed 1 times) +Unimplimented PXA260 GPIO 78 set:4, PC:0x20006328(printed 1 times) +Unimplemented T3 SD chip write at address 0x0C, value:0x0014(printed 1 times) +Unimplemented T3 SD chip read at address 0x0E(printed 1 times) +Unimplemented T3 SD chip write at address 0x0C, value:0x0014(printed 1 times) +Unimplemented T3 SD chip read at address 0x0E(printed 1 times) +Unimplemented T3 SD chip read at address 0x0C(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 2 times) +TSC2101 scan set to 0x0(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 2 times) +TSC2101 config register writes not fully implemented(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 2 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC418(printed 1 times) +Unknown coprocessor instruction MCR 0E071FB2(printed 16384 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "ReadGPIOPin", pin:36(printed 1 times) +Called from address:0x200B86C4(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:36, value:0(printed 1 times) +Called from address:0x200B86DC(printed 1 times) +Unimplimented PXA260 GPIO 36 set:4, PC:0x200B1DC0(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "ReadGPIOPin", pin:35(printed 1 times) +Called from address:0x200B866C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:35, value:1(printed 1 times) +Called from address:0x200B8688(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC7FC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC7FC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC7FC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC7FC(printed 1 times) +Unimplemented TPS65010 register write, address:0x08, value:0x80, PC:0x200B5EFC(printed 10 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC7FC(printed 1 times) +Unimplemented TPS65010 register write, address:0x0D, value:0x20, PC:0x200B5EFC(printed 10 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x000C(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register write:0x000C, value:0x3FF187A9(printed 1 times) +Unimplimented 32 bit PXA260 MEMCTRL register read:0x000C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:78, value:0(printed 1 times) +Called from address:0x200B6224(printed 1 times) +Unimplimented PXA260 GPIO 78 set:4, PC:0x200B1D70(printed 1 times) +Unimplimented PXA260 GPIO 78 set:4, PC:0x200B1D7C(printed 1 times) +Unimplemented T3 SD chip write at address 0x0C, value:0x0014(printed 1 times) +Unimplemented T3 SD chip read at address 0x0E(printed 1 times) +Unimplemented T3 SD chip write at address 0x0C, value:0x0014(printed 1 times) +Unimplemented T3 SD chip read at address 0x0E(printed 1 times) +Unimplemented T3 SD chip read at address 0x0C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:40, value:1(printed 1 times) +Called from address:0x200B47CC(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:40, value:0(printed 1 times) +Called from address:0x200B47E0(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:1(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:1(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +TSC2101 scan set to 0x0(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:1(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:1(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:1(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +TSC2101 config register writes not fully implemented(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:1(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +TSC2101 PINTDAV not fully implemented(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:24, value:0(printed 1 times) +Called from address:0x200B47BC(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:33, value:1(printed 1 times) +Called from address:0x200AAA0C(printed 1 times) +Called "ReadGPIOPin", pin:0(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:10(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:11(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:33, value:0(printed 1 times) +Called from address:0x200AAA58(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:19, value:1(printed 1 times) +Called from address:0x200AAA0C(printed 1 times) +Called "ReadGPIOPin", pin:0(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:10(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:11(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:19, value:0(printed 1 times) +Called from address:0x200AAA58(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:20, value:1(printed 1 times) +Called from address:0x200AAA0C(printed 1 times) +Called "ReadGPIOPin", pin:0(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:10(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:11(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:20, value:0(printed 1 times) +Called from address:0x200AAA58(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:21, value:1(printed 1 times) +Called from address:0x200AAA0C(printed 1 times) +Called "ReadGPIOPin", pin:0(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:10(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:11(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:21, value:0(printed 1 times) +Called from address:0x200AAA58(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:22, value:1(printed 1 times) +Called from address:0x200AAA0C(printed 1 times) +Called "ReadGPIOPin", pin:0(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:10(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "ReadGPIOPin", pin:11(printed 1 times) +Called from address:0x200AAA34(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:22, value:0(printed 1 times) +Called from address:0x200AAA58(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:1, value:0(printed 1 times) +Called from address:0x200AC7FC(printed 1 times) +TPS65010 DEFGPIO read, PC:0x200B610C(printed 10 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Called "WriteGPIOPinInvertedValue", pin:45, value:0(printed 1 times) +Called from address:0x200ADD3C(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA174(printed 1 times) +Jumped to:0x200BA170(printed 1 times) +Jumped to:0x200BA16A(printed 1 times) +Jumped to:0x200BA192(printed 1 times) +Jumped to:0x2009F5E0(printed 1 times) +Jumped to:0x200BA196(printed 1 times) +Jumped to:0x200BBF3A(printed 1 times) +Jumped to:0x2009B524(printed 1 times) +Jumped to:0x2009B540(printed 1 times) +Jumped to:0x200A678C(printed 1 times) +Jumped to:0x200BBF12(printed 1 times) +Jumped to:0x00000008(printed 1 times) +Jumped to:0x200C0FC4(printed 1 times) +Jumped to:0x200C0FF8(printed 1 times) +Jumped to:0x200C102C(printed 1 times) +Jumped to:0x200C1048(printed 1 times) +Jumped to:0x200C2114(printed 1 times) +Jumped to:0x200BA2A4(printed 1 times) +Jumped to:0x2009F850(printed 1 times) +Jumped to:0x200C1130(printed 1 times) +Jumped to:0x2009F638(printed 1 times) +Jumped to:0x2009F6E8(printed 1 times) +Jumped to:0x2009F6EC(printed 1 times) +Jumped to:0x200BBF26(printed 1 times) +Jumped to:0x200A67DC(printed 1 times) +Jumped to:0x2009B554(printed 1 times) +Jumped to:0x200A72CC(printed 1 times)//trying to load some module here but never gets to it +Jumped to:0x200C3018(printed 1 times)//KALMutexCreate jumptable entry +Jumped to:0x200C1F54(printed 1 times)//KALMutexCreate function stub +Jumped to:0x200BC542(printed 1 times)//KALMutexCreate SVC call stub +Jumped to:0x00000008(printed 1 times)//SVC call made, this is where things start to go bad +Jumped to:0x200C0FC4(printed 1 times)//\ +Jumped to:0x200C0FF8(printed 1 times)//| +Jumped to:0x200C102C(printed 1 times)//|SWIVector handler +Jumped to:0x200C1118(printed 1 times)//| +Jumped to:0x200C2444(printed 1 times)/// +Jumped to:0x200BA66A(printed 1 times)//\ +Jumped to:0x200BA67A(printed 1 times)//| +Jumped to:0x200BA610(printed 1 times)//| +Jumped to:0x200BA622(printed 1 times)//| +Jumped to:0x200BA62C(printed 1 times)//| +Jumped to:0x200BA636(printed 1 times)//| +Jumped to:0x200BA658(printed 1 times)//|??? +Jumped to:0x200BA61E(printed 1 times)//| +Jumped to:0x200BA6A4(printed 1 times)//| +Jumped to:0x200C1130(printed 1 times)//| +Jumped to:0x2009F638(printed 1 times)//| +Jumped to:0x2009F6A8(printed 1 times)//| +Jumped to:0x2009F678(printed 1 times)/// +Jumped to:0x200C2820(printed 1 times)//EnterIdleMode +Called "EnterIdleMode", took 395292 jumps to reach this function(printed 1 times) +Called from address:0x2009F68C(printed 1 times) +Someone tried to set processor power mode (cp14 reg7) to 0x00000001, PC:0x200C283C(printed 1 times) diff --git a/qtBuildSystem/Mu/emuwrapper.cpp b/qtBuildSystem/Mu/emuwrapper.cpp index 29fde80..c3c02dc 100644 --- a/qtBuildSystem/Mu/emuwrapper.cpp +++ b/qtBuildSystem/Mu/emuwrapper.cpp @@ -38,7 +38,7 @@ static QVector debugStrings; static uint64_t debugDeletedStrings; static QVector debugDuplicateCallCount; static bool debugAbort = false; -static QString debugAbortString = ""; +static QString debugAbortString = "Someone tried to set processor power mode (cp14 reg7) to 0x00000001"; uint32_t frontendDebugStringSize; char* frontendDebugString; diff --git a/src/armv5te/uArm/CPU_2.c b/src/armv5te/uArm/CPU_2.c index e17dc52..4ada884 100644 --- a/src/armv5te/uArm/CPU_2.c +++ b/src/armv5te/uArm/CPU_2.c @@ -120,9 +120,19 @@ static char* getArmString(ArmCpu* cpu, uint32_t address, uint32_t maxSize){ return str; } -static void cpuPcChanged(ArmCpu* cpu, uint32_t newPc){ +static void cpuOnPcUpdate(ArmCpu* cpu, uint32_t newPc){ //debug tool for extracting data from ARM function calls bool logSource = true; + static uint32_t callCount; + + callCount++; + + //reset when the system resets + if(newPc == 0x00000000) + callCount = 0; + + if(callCount > 395281/*jumps to reach EnterIdleMode*/ - 80) + debugLog("Jumped to:0x%08X\n", newPc); switch(newPc){ case PC_FROM_DAL_ADDR(0x00016C94): @@ -164,13 +174,18 @@ static void cpuPcChanged(ArmCpu* cpu, uint32_t newPc){ debugLog("Called \"HALSetInitStage\", stage:%d\n", cpuGetRegExternal(cpu, 0)); break; + case PC_FROM_DAL_ADDR(0x000276F0): + //EnterIdleMode + debugLog("Called \"EnterIdleMode\", took %d jumps to reach this function\n", callCount); + break; + default: logSource = false; break; } if(logSource) - debugLog("Called from address:0x%08X\n", cpuGetRegExternal(cpu, 15) - 8); + debugLog("Called from address:0x%08X\n", cpuGetRegExternal(cpu, 15) - 4); } #else #define cpuPcChanged(x, y) @@ -186,9 +201,7 @@ static _INLINE_ UInt32 cpuPrvROR(UInt32 val, UInt8 ror){ } static _INLINE_ void cpuPrvSetPC(ArmCpu* cpu, UInt32 pc){ - //call first to allow debug function to access parent callers PC - cpuPcChanged(cpu, pc &~ 1UL); - + cpuOnPcUpdate(cpu, pc &~ 1UL); cpu->regs[15] = pc &~ 1UL; cpu->CPSR &=~ ARM_SR_T; if(pc & 1) cpu->CPSR |= ARM_SR_T; @@ -302,13 +315,13 @@ static void cpuPrvSwitchToMode(ArmCpu* cpu, UInt8 newMode){ } static void cpuPrvException(ArmCpu* cpu, UInt32 vector_pc, UInt32 lr, UInt32 newCPSR){ - UInt32 cpsr = cpu->CPSR; cpuPrvSwitchToMode(cpu, newCPSR & ARM_SR_M); cpu->CPSR = newCPSR; cpu->SPSR = cpsr; cpu->regs[14] = lr; + cpuOnPcUpdate(cpu, vector_pc); cpu->regs[15] = vector_pc; } @@ -2040,12 +2053,12 @@ data_processing: //data processing if(S){ //update flags or restore CPSR if(!usesUsrRegs && vb8 == 15 && store){ - UInt32 sr; - + sr = cpu->SPSR; cpuPrvSwitchToMode(cpu, sr & ARM_SR_M); cpu->CPSR = sr; + cpuOnPcUpdate(cpu, tmp); cpu->regs[15] = tmp; //do it right here - if we let it use cpuPrvSetReg, it will check lower bit... store = false; } @@ -2673,6 +2686,7 @@ static Err cpuPrvCycleThumb(ArmCpu* cpu){ case 1: //BLX(1)_suffix instr = cpu->regs[15]; + cpuOnPcUpdate(cpu, (cpu->regs[14] + 2 + (((UInt32)v16) << 1)) &~ 3UL); cpu->regs[15] = (cpu->regs[14] + 2 + (((UInt32)v16) << 1)) &~ 3UL; cpu->regs[14] = instr | 1UL; cpu->CPSR &=~ ARM_SR_T; @@ -2686,6 +2700,7 @@ static Err cpuPrvCycleThumb(ArmCpu* cpu){ case 3: //BL_suffix instr = cpu->regs[15]; + cpuOnPcUpdate(cpu, cpu->regs[14] + 2 + (((UInt32)v16) << 1)); cpu->regs[15] = cpu->regs[14] + 2 + (((UInt32)v16) << 1); cpu->regs[14] = instr | 1UL; goto instr_done;