-fixed tintin (temporary with calling "nop\n" after every command)

This commit is contained in:
fix94.1 2012-02-05 18:58:15 +00:00
parent dae85e4128
commit 787e753f58
2 changed files with 35 additions and 0 deletions

View File

@ -91,14 +91,21 @@ s32 BootChannel(u8 *data, u64 chantitle, u8 vidMode, bool vipatch, bool countryS
{ {
__asm__( __asm__(
"lis %r3, entryPoint@h\n" "lis %r3, entryPoint@h\n"
"nop\n"
"ori %r3, %r3, entryPoint@l\n" "ori %r3, %r3, entryPoint@l\n"
"nop\n"
"lwz %r3, 0(%r3)\n" "lwz %r3, 0(%r3)\n"
"nop\n"
"mtlr %r3\n" "mtlr %r3\n"
"nop\n"
"lis %r3, 0x8000\n" "lis %r3, 0x8000\n"
"nop\n"
"ori %r3, %r3, 0x18A8\n" "ori %r3, %r3, 0x18A8\n"
"nop\n" "nop\n"
"mtctr %r3\n" "mtctr %r3\n"
"nop\n"
"bctr\n" "bctr\n"
"nop\n"
); );
} }
else appJump(); else appJump();
@ -107,23 +114,39 @@ s32 BootChannel(u8 *data, u64 chantitle, u8 vidMode, bool vipatch, bool countryS
{ {
__asm__( __asm__(
"lis %r3, returnpoint@h\n" "lis %r3, returnpoint@h\n"
"nop\n"
"ori %r3, %r3, returnpoint@l\n" "ori %r3, %r3, returnpoint@l\n"
"nop\n"
"mtlr %r3\n" "mtlr %r3\n"
"nop\n"
"lis %r3, 0x8000\n" "lis %r3, 0x8000\n"
"nop\n"
"ori %r3, %r3, 0x18A8\n" "ori %r3, %r3, 0x18A8\n"
"nop\n" "nop\n"
"mtctr %r3\n" "mtctr %r3\n"
"nop\n"
"bctr\n" "bctr\n"
"nop\n"
"returnpoint:\n" "returnpoint:\n"
"nop\n"
"bl DCDisable\n" "bl DCDisable\n"
"nop\n"
"bl ICDisable\n" "bl ICDisable\n"
"nop\n"
"li %r3, 0\n" "li %r3, 0\n"
"nop\n"
"mtsrr1 %r3\n" "mtsrr1 %r3\n"
"nop\n"
"lis %r4, entryPoint@h\n" "lis %r4, entryPoint@h\n"
"nop\n"
"ori %r4,%r4,entryPoint@l\n" "ori %r4,%r4,entryPoint@l\n"
"nop\n"
"lwz %r4, 0(%r4)\n" "lwz %r4, 0(%r4)\n"
"nop\n"
"mtsrr0 %r4\n" "mtsrr0 %r4\n"
"nop\n"
"rfi\n" "rfi\n"
"nop\n"
); );
} }
else _unstub_start(); else _unstub_start();

View File

@ -398,24 +398,36 @@ s32 Disc_BootPartition(u64 offset, u8 vidMode, bool vipatch, bool countryString,
{ {
__asm__( __asm__(
"lis %r3, appentrypoint@h\n" "lis %r3, appentrypoint@h\n"
"nop\n"
"ori %r3, %r3, appentrypoint@l\n" "ori %r3, %r3, appentrypoint@l\n"
"nop\n"
"lwz %r3, 0(%r3)\n" "lwz %r3, 0(%r3)\n"
"nop\n"
"mtlr %r3\n" "mtlr %r3\n"
"nop\n"
"lis %r3, 0x8000\n" "lis %r3, 0x8000\n"
"nop\n"
"ori %r3, %r3, 0x18A8\n" "ori %r3, %r3, 0x18A8\n"
"nop\n" "nop\n"
"mtctr %r3\n" "mtctr %r3\n"
"nop\n"
"bctr\n" "bctr\n"
"nop\n"
); );
} }
else else
{ {
__asm__( __asm__(
"lis %r3, appentrypoint@h\n" "lis %r3, appentrypoint@h\n"
"nop\n"
"ori %r3, %r3, appentrypoint@l\n" "ori %r3, %r3, appentrypoint@l\n"
"nop\n"
"lwz %r3, 0(%r3)\n" "lwz %r3, 0(%r3)\n"
"nop\n"
"mtlr %r3\n" "mtlr %r3\n"
"nop\n"
"blr\n" "blr\n"
"nop\n"
); );
} }