Guest User

c10ud

a guest
Feb 22nd, 2012
63
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Index: platform/ixus220_elph300hs/kbd.c
  2. ===================================================================
  3. --- platform/ixus220_elph300hs/kbd.c    (revision 1681)
  4. +++ platform/ixus220_elph300hs/kbd.c    (working copy)
  5. @@ -37,7 +37,7 @@
  6.  extern void _GetKbdState(long*);
  7.  
  8.  
  9. -#define KEYS_MASK0 (0x00004000|0X00000004)
  10. +#define KEYS_MASK0 (0x00004000|0X00000005)
  11.  #define KEYS_MASK1 (0x00000000)
  12.  #define KEYS_MASK2 (0x00004000|0x00000300|0x00000100|0x00000080|0x00000040|0x00000010|0x00000020|0x00000004|0x00000008|0x00000002|0x00000001)
  13.  
  14. Index: platform/ixus220_elph300hs/sub/101a/boot.c
  15. ===================================================================
  16. --- platform/ixus220_elph300hs/sub/101a/boot.c  (revision 1681)
  17. +++ platform/ixus220_elph300hs/sub/101a/boot.c  (working copy)
  18. @@ -93,103 +93,102 @@
  19.  void __attribute__((naked,noinline)) boot() {
  20.    
  21.      asm volatile (
  22. -                "LDR     R1, =0xC0410000\n"
  23. -                "MOV     R0, #0\n"
  24. -                "STR     R0, [R1]\n"
  25. -                "MOV     R1, #0x78\n"
  26. -                "MCR     p15, 0, R1,c1,c0\n"
  27. -                "MOV     R1, #0\n"
  28. -                "MCR     p15, 0, R1,c7,c10, 4\n"
  29. -                "MCR     p15, 0, R1,c7,c5\n"
  30. -                "MCR     p15, 0, R1,c7,c6\n"
  31. -                "MOV     R0, #0x3D\n"
  32. -                "MCR     p15, 0, R0,c6,c0\n"
  33. -                "MOV     R0, #0xC000002F\n"
  34. -                "MCR     p15, 0, R0,c6,c1\n"
  35. -                "MOV     R0, #0x35\n"                  // memory region & size. bits 1 - 5 = size index, actual size = 2^(size index + 1) = 128MB
  36. -                "MCR     p15, 0, R0,c6,c2\n"
  37. -                "MOV     R0, #0x40000035\n"                // memory region & size. bits 1 - 5 = size index, actual size = 2^(size index + 1) = 128MB
  38. -                "MCR     p15, 0, R0,c6,c3\n"
  39. -                "MOV     R0, #0x80000017\n"
  40. -                "MCR     p15, 0, R0,c6,c4\n"
  41. -                "LDR     R0, =0xFF80002D\n"
  42. -                "MCR     p15, 0, R0,c6,c5\n"
  43. -                "MOV     R0, #0x34\n"
  44. -                "MCR     p15, 0, R0,c2,c0\n"
  45. -                "MOV     R0, #0x34\n"
  46. -                "MCR     p15, 0, R0,c2,c0, 1\n"
  47. -                "MOV     R0, #0x34\n"
  48. -                "MCR     p15, 0, R0,c3,c0\n"
  49. -               "LDR     R0, =0x3333330\n"
  50. -                "MCR     p15, 0, R0,c5,c0, 2\n"
  51. -                "LDR     R0, =0x3333330\n"
  52. -                "MCR     p15, 0, R0,c5,c0, 3\n"
  53. -                "MRC     p15, 0, R0,c1,c0\n"
  54. -                "ORR     R0, R0, #0x1000\n"
  55. -                "ORR     R0, R0, #4\n"
  56. -                "ORR     R0, R0, #1\n"
  57. -                "MCR     p15, 0, R0,c1,c0\n"
  58. -                "MOV     R1, #0x80000006\n"
  59. -                "MCR     p15, 0, R1,c9,c1\n"
  60. -                "MOV     R1, #6\n"
  61. -                "MCR     p15, 0, R1,c9,c1, 1\n"
  62. -                "MRC     p15, 0, R1,c1,c0\n"
  63. -                "ORR     R1, R1, #0x50000\n"
  64. -                "MCR     p15, 0, R1,c1,c0\n"
  65. -                "LDR     R2, =0xC0200000\n"
  66. -                "MOV     R1, #1\n"
  67. -                "STR     R1, [R2,#0x10C]\n"
  68. -                "MOV     R1, #0xFF\n"
  69. -                "STR     R1, [R2,#0xC]\n"
  70. -                "STR     R1, [R2,#0x1C]\n"
  71. -                "STR     R1, [R2,#0x2C]\n"
  72. -                "STR     R1, [R2,#0x3C]\n"
  73. -                "STR     R1, [R2,#0x4C]\n"
  74. -                "STR     R1, [R2,#0x5C]\n"
  75. -                "STR     R1, [R2,#0x6C]\n"
  76. -                "STR     R1, [R2,#0x7C]\n"
  77. -                "STR     R1, [R2,#0x8C]\n"
  78. -                "STR     R1, [R2,#0x9C]\n"
  79. -                "STR     R1, [R2,#0xAC]\n"
  80. -                "STR     R1, [R2,#0xBC]\n"
  81. -                "STR     R1, [R2,#0xCC]\n"
  82. -                "STR     R1, [R2,#0xDC]\n"
  83. -                "STR     R1, [R2,#0xEC]\n"
  84. -                "STR     R1, [R2,#0xFC]\n"
  85. -                "LDR     R1, =0xC0400008\n"
  86. -                "LDR     R2, =0x430005\n"
  87. -                "STR     R2, [R1]\n"
  88. -                "MOV     R1, #1\n"
  89. -                "LDR     R2, =0xC0243100\n"
  90. -                "STR     R2, [R1]\n"
  91. -                "LDR     R2, =0xC0242010\n"
  92. -                "LDR     R1, [R2]\n"
  93. -                "ORR     R1, R1, #1\n"
  94. -                "STR     R1, [R2]\n"
  95. +"    LDR     R1, =0xC0410000 \n"
  96. +"    MOV     R0, #0 \n"
  97. +"    STR     R0, [R1] \n"
  98. +"    MOV     R1, #0x78 \n"
  99. +"    MCR     p15, 0, R1, c1, c0 \n"
  100. +"    MOV     R1, #0 \n"
  101. +"    MCR     p15, 0, R1, c7, c10, 4 \n"
  102. +"    MCR     p15, 0, R1, c7, c5 \n"
  103. +"    MCR     p15, 0, R1, c7, c6 \n"
  104. +"    MOV     R0, #0x3D \n"
  105. +"    MCR     p15, 0, R0, c6, c0 \n"
  106. +"    MOV     R0, #0xC000002F \n"
  107. +"    MCR     p15, 0, R0, c6, c1 \n"
  108. +"    MOV     R0, #0x35 \n"
  109. +"    MCR     p15, 0, R0, c6, c2 \n"
  110. +"    MOV     R0, #0x40000035 \n"
  111. +"    MCR     p15, 0, R0, c6, c3 \n"
  112. +"    MOV     R0, #0x80000017 \n"
  113. +"    MCR     p15, 0, R0, c6, c4 \n"
  114. +"    LDR     R0, =0xFF80002D \n"
  115. +"    MCR     p15, 0, R0, c6, c5 \n"
  116. +"    MOV     R0, #0x34 \n"
  117. +"    MCR     p15, 0, R0, c2, c0 \n"
  118. +"    MOV     R0, #0x34 \n"
  119. +"    MCR     p15, 0, R0, c2, c0, 1 \n"
  120. +"    MOV     R0, #0x34 \n"
  121. +"    MCR     p15, 0, R0, c3, c0 \n"
  122. +"    LDR     R0, =0x3333330 \n"
  123. +"    MCR     p15, 0, R0, c5, c0, 2 \n"
  124. +"    LDR     R0, =0x3333330 \n"
  125. +"    MCR     p15, 0, R0, c5, c0, 3 \n"
  126. +"    MRC     p15, 0, R0, c1, c0 \n"
  127. +"    ORR     R0, R0, #0x1000 \n"
  128. +"    ORR     R0, R0, #4 \n"
  129. +"    ORR     R0, R0, #1 \n"
  130. +"    MCR     p15, 0, R0, c1, c0 \n"
  131. +"    MOV     R1, #0x80000006 \n"
  132. +"    MCR     p15, 0, R1, c9, c1 \n"
  133. +"    MOV     R1, #6 \n"
  134. +"    MCR     p15, 0, R1, c9, c1, 1 \n"
  135. +"    MRC     p15, 0, R1, c1, c0 \n"
  136. +"    ORR     R1, R1, #0x50000 \n"
  137. +"    MCR     p15, 0, R1, c1, c0 \n"
  138. +"    LDR     R2, =0xC0200000 \n"
  139. +"    MOV     R1, #1 \n"
  140. +"    STR     R1, [R2, #0x10C] \n"
  141. +"    MOV     R1, #0xFF \n"
  142. +"    STR     R1, [R2, #0xC] \n"
  143. +"    STR     R1, [R2, #0x1C] \n"
  144. +"    STR     R1, [R2, #0x2C] \n"
  145. +"    STR     R1, [R2, #0x3C] \n"
  146. +"    STR     R1, [R2, #0x4C] \n"
  147. +"    STR     R1, [R2, #0x5C] \n"
  148. +"    STR     R1, [R2, #0x6C] \n"
  149. +"    STR     R1, [R2, #0x7C] \n"
  150. +"    STR     R1, [R2, #0x8C] \n"
  151. +"    STR     R1, [R2, #0x9C] \n"
  152. +"    STR     R1, [R2, #0xAC] \n"
  153. +"    STR     R1, [R2, #0xBC] \n"
  154. +"    STR     R1, [R2, #0xCC] \n"
  155. +"    STR     R1, [R2, #0xDC] \n"
  156. +"    STR     R1, [R2, #0xEC] \n"
  157. +"    STR     R1, [R2, #0xFC] \n"
  158. +"    LDR     R1, =0xC0400008 \n"
  159. +"    LDR     R2, =0x430005 \n"
  160. +"    STR     R2, [R1] \n"
  161. +"    MOV     R1, #1 \n"
  162. +"    LDR     R2, =0xC0243100 \n"
  163. +"    STR     R2, [R1] \n"
  164. +"    LDR     R2, =0xC0242010 \n"
  165. +"    LDR     R1, [R2] \n"
  166. +"    ORR     R1, R1, #1 \n"
  167. +"    STR     R1, [R2] \n"
  168. +"    LDR     R0, =0xFFC8AB40 \n"
  169. +"    LDR     R1, =0x1900 \n"
  170. +"    LDR     R3, =0x1049C \n"
  171. +"loc_FF81013C:\n"
  172. +"    CMP     R1, R3 \n"
  173. +"    LDRCC   R2, [R0], #4 \n"
  174. +"    STRCC   R2, [R1], #4 \n"
  175. +"    BCC     loc_FF81013C \n"
  176. +"    LDR     R1, =0x1774EC \n"
  177. +"    MOV     R2, #0 \n"
  178. +"loc_FF810154:\n"
  179. +"    CMP     R3, R1 \n"
  180. +"    STRCC   R2, [R3], #4 \n"
  181. +"    BCC     loc_FF810154 \n"
  182. +"    B       sub_FF810358_my \n"
  183.  
  184. -                "LDR     R0, =0xFFC8AB40\n"                // adapted for 101a Firmware
  185. -                "LDR     R1, =0x1900\n"
  186. -                "LDR     R3, =0x1049C\n"
  187. -   "loc_FF00013C:\n"
  188. -                "CMP     R1, R3\n"
  189. -                "LDRCC   R2, [R0],#4\n"
  190. -                "STRCC   R2, [R1],#4\n"
  191. -                "BCC     loc_FF00013C\n"
  192. -                "LDR     R1, =0x1774EC\n"
  193. -                "MOV     R2, #0\n"
  194. -   "loc_FF000154:\n"
  195. -                "CMP     R3, R1\n"
  196. -                "STRCC   R2, [R3],#4\n"
  197. -                "BCC     loc_FF000154\n"
  198. -              
  199. -                "B       sub_FF000358_my" // -->
  200.      );
  201.  }
  202.  
  203.  /*----------------------------------------------------------------------
  204. -   sub_FF000358_my
  205. +   sub_FF810358_my
  206.  -----------------------------------------------------------------------*/
  207. -void __attribute__((naked,noinline)) sub_FF000358_my() {
  208. +void __attribute__((naked,noinline)) sub_FF810358_my() {
  209.  // FF810358
  210.  
  211.     //http://chdk.setepontos.com/index.php/topic,4194.0.html
  212. @@ -201,140 +200,131 @@
  213.     *(int*)(0x25F4) = (*(int*)0xC0220130)&1 ? 0x200000 : 0x100000;
  214.    
  215.     asm volatile (
  216. -                "LDR     R0, =0xFF8103D0\n"
  217. -                "MOV     R1, #0\n"
  218. -                "LDR     R3, =0xFF810408\n"
  219. -   "loc_FF000364:\n"
  220. -                "CMP     R0, R3\n"
  221. -                "LDRCC   R2, [R0],#4\n"
  222. -                "STRCC   R2, [R1],#4\n"
  223. -                "BCC     loc_FF000364\n"
  224. -                "LDR     R0, =0xFF810408\n"
  225. -                "MOV     R1, #0x4B0\n"
  226. -                "LDR     R3, =0xFF81061C\n"
  227. -   "loc_FF000380:\n"
  228. -                "CMP     R0, R3\n"
  229. -                "LDRCC   R2, [R0],#4\n"
  230. -                "STRCC   R2, [R1],#4\n"
  231. -                "BCC     loc_FF000380\n"
  232. -                "MOV     R0, #0xD2\n"
  233. -                "MSR     CPSR_cxsf, R0\n"
  234. -                "MOV     SP, #0x1000\n"
  235. -                "MOV     R0, #0xD3\n"
  236. -                "MSR     CPSR_cxsf, R0\n"
  237. -                "MOV     SP, #0x1000\n"
  238. -                "LDR     R0, =0x6C4\n"
  239. -                "LDR     R2, =0xEEEEEEEE\n"
  240. -                "MOV     R3, #0x1000\n"
  241. -   "loc_FF0003B4:\n"
  242. -                "CMP     R0, R3\n"
  243. -                "STRCC   R2, [R0],#4\n"
  244. -                "BCC     loc_FF0003B4\n"
  245. -                //"BL      sub_FF0011B0\n"                 // original
  246. -                "BL      sub_FF0011B0_my\n"            // --> patched
  247. +"    LDR     R0, =0xFF8103D0 \n"
  248. +"    MOV     R1, #0 \n"
  249. +"    LDR     R3, =0xFF810408 \n"
  250. +"loc_FF810364:\n"
  251. +"    CMP     R0, R3 \n"
  252. +"    LDRCC   R2, [R0], #4 \n"
  253. +"    STRCC   R2, [R1], #4 \n"
  254. +"    BCC     loc_FF810364 \n"
  255. +"    LDR     R0, =0xFF810408 \n"
  256. +"    MOV     R1, #0x4B0 \n"
  257. +"    LDR     R3, =0xFF81061C \n"
  258. +"loc_FF810380:\n"
  259. +"    CMP     R0, R3 \n"
  260. +"    LDRCC   R2, [R0], #4 \n"
  261. +"    STRCC   R2, [R1], #4 \n"
  262. +"    BCC     loc_FF810380 \n"
  263. +"    MOV     R0, #0xD2 \n"
  264. +"    MSR     CPSR_cxsf, R0 \n"
  265. +"    MOV     SP, #0x1000 \n"
  266. +"    MOV     R0, #0xD3 \n"
  267. +"    MSR     CPSR_cxsf, R0 \n"
  268. +"    MOV     SP, #0x1000 \n"
  269. +"    LDR     R0, =0x6C4 \n"
  270. +"    LDR     R2, =0xEEEEEEEE \n"
  271. +"    MOV     R3, #0x1000 \n"
  272. +"loc_FF8103B4:\n"
  273. +"    CMP     R0, R3 \n"
  274. +"    STRCC   R2, [R0], #4 \n"
  275. +"    BCC     loc_FF8103B4 \n"
  276. +"    BL      sub_FF8111B0_my \n"
  277. +
  278.       );
  279.  }
  280.  
  281.  /*----------------------------------------------------------------------
  282. -   sub_FF0011B0_my
  283. +   sub_FF8111B0_my
  284.  -----------------------------------------------------------------------*/
  285. -void __attribute__((naked,noinline)) sub_FF0011B0_my() {
  286. +void __attribute__((naked,noinline)) sub_FF8111B0_my() {
  287.  // FF8111B0
  288.  
  289.       asm volatile (
  290. -                "STR     LR, [SP,#-4]!\n"
  291. -                "SUB     SP, SP, #0x74\n"
  292. -                "MOV     R1, #0x74\n"
  293. -                "MOV     R0, SP\n"
  294. -                "BL      sub_FFB9C644\n"               // adapted for 101a Firmware
  295. -                "MOV     R0, #0x53000\n"
  296. -                "STR     R0, [SP,#4]\n"
  297. +"    STR     LR, [SP, #-4]! \n"
  298. +"    SUB     SP, SP, #0x74 \n"
  299. +"    MOV     R1, #0x74 \n"
  300. +"    MOV     R0, SP \n"
  301. +"    BL      sub_FFB9C644 \n"
  302. +"    MOV     R0, #0x53000 \n"
  303. +"    STR     R0, [SP, #4] \n"
  304.  #if defined(OPT_CHDK_IN_EXMEM)
  305.                  "LDR     R0, =0x1774EC\n"              // use original heap offset since CHDK is loaded in high memory
  306.  #else
  307.                  "LDR     R0, =new_sa\n"                // otherwise use patched value
  308.                  "LDR     R0, [R0]\n"      
  309. -#endif
  310. -               "LDR     R2, =0x371F80 \n"
  311. -               "STR     R0, [SP,#0x8] \n"
  312. -               "SUB     R0, R2, R0 \n"
  313. -               "STR     R0, [SP,#0xC] \n"
  314. -               "MOV     R0, #0x22 \n"
  315. -               "STR     R0, [SP,#0x18] \n"
  316. -               "MOV     R0, #0x68 \n"
  317. -               "STR     R0, [SP,#0x1C] \n"
  318. -               "LDR     R1, =0x379C00 \n"
  319. -               "LDR     R0, =0x19B \n"
  320. -               "STR     R1, [SP] \n"
  321. -               "STR     R0, [SP,#0x20] \n"
  322. -               "MOV     R0, #0x96 \n"
  323. -               "STR     R2, [SP,#0x10] \n"
  324. -               "STR     R1, [SP,#0x14] \n"
  325. -               "STR     R0, [SP,#0x24] \n"
  326. -               "STR     R0, [SP,#0x28] \n"
  327. -               "MOV     R0, #0x64 \n"
  328. -               "STR     R0, [SP,#0x2C] \n"
  329. -               "MOV     R0, #0 \n"
  330. -               "STR     R0, [SP,#0x30] \n"
  331. -               "STR     R0, [SP,#0x34] \n"
  332. -               "MOV     R0, #0x10 \n"
  333. -               "STR     R0, [SP,#0x5C] \n"
  334. -               "MOV     R0, #0x800 \n"
  335. -               "STR     R0, [SP,#0x60] \n"
  336. -               "MOV     R0, #0xA0 \n"
  337. -               "STR     R0, [SP,#0x64] \n"
  338. -               "MOV     R0, #0x280 \n"
  339. -               "STR     R0, [SP,#0x68] \n"
  340. -               //"LDR     R1, =sub_FF815EE0 \n"        // original
  341. -               "LDR     R1, =sub_FF005EE0_my \n"       // --> patched
  342. +#endif    
  343. +"    LDR     R2, =0x371F80 \n"
  344. +"    STR     R0, [SP, #8] \n"
  345. +"    SUB     R0, R2, R0 \n"
  346. +"    STR     R0, [SP, #0xC] \n"
  347. +"    MOV     R0, #0x22 \n"
  348. +"    STR     R0, [SP, #0x18] \n"
  349. +"    MOV     R0, #0x68 \n"
  350. +"    STR     R0, [SP, #0x1C] \n"
  351. +"    LDR     R1, =0x379C00 \n"
  352. +"    LDR     R0, =0x19B \n"
  353. +"    STR     R1, [SP] \n"
  354. +"    STR     R0, [SP, #0x20] \n"
  355. +"    MOV     R0, #0x96 \n"
  356. +"    STR     R2, [SP, #0x10] \n"
  357. +"    STR     R1, [SP, #0x14] \n"
  358. +"    STR     R0, [SP, #0x24] \n"
  359. +"    STR     R0, [SP, #0x28] \n"
  360. +"    MOV     R0, #0x64 \n"
  361. +"    STR     R0, [SP, #0x2C] \n"
  362. +"    MOV     R0, #0 \n"
  363. +"    STR     R0, [SP, #0x30] \n"
  364. +"    STR     R0, [SP, #0x34] \n"
  365. +"    MOV     R0, #0x10 \n"
  366. +"    STR     R0, [SP, #0x5C] \n"
  367. +"    MOV     R0, #0x800 \n"
  368. +"    STR     R0, [SP, #0x60] \n"
  369. +"    MOV     R0, #0xA0 \n"
  370. +"    STR     R0, [SP, #0x64] \n"
  371. +"    MOV     R0, #0x280 \n"
  372. +"    STR     R0, [SP, #0x68] \n"
  373. +"    LDR     R1, =sub_FF815EE0_my \n"
  374.                 "B      sub_FF81124C \n"                // --> continue in firmware
  375.       );
  376.  }
  377.  
  378.  /*----------------------------------------------------------------------
  379. -   sub_FF005EE0_my
  380. +   sub_FF815EE0_my
  381.  -----------------------------------------------------------------------*/
  382. -void __attribute__((naked,noinline)) sub_FF005EE0_my() {
  383. +void __attribute__((naked,noinline)) sub_FF815EE0_my() {
  384.  // FF815EE0
  385.  
  386.     asm volatile (
  387. -               "STMFD  SP!, {R4,LR} \n"
  388. -               "BL sub_FF810B28 \n"
  389. -               "BL sub_FF81A374 \n"                    // dmSetup
  390. -               "CMP    R0, #0 \n"
  391. -               //"ADRLT    R0, aDmsetup \n"            // "dmSetup"
  392. -               "LDRLT  r0, =0xFF815FF4 \n"
  393. +"    STMFD   SP!, {R4,LR} \n"
  394. +"    BL      sub_FF810B28 \n"
  395. +"    BL      sub_FF81A374 \n"
  396. +"    CMP     R0, #0 \n"
  397. +"    LDRLT   R0, =0xFF815FF4 \n"              
  398. +"BLLT  _err_init_task \n"
  399. +"    BL      sub_FF815B18 \n"
  400. +"    CMP     R0, #0 \n"
  401. +"    LDRLT   R0, =0xFF815FFC \n"
  402.                 "BLLT   _err_init_task \n"
  403. -               "BL sub_FF815B18 \n"
  404. -               "CMP    R0, #0 \n"
  405. -               //"ADRLT    R0, aTermdriverinit \n"     // "termDriverInit"
  406. -               "LDRLT  R0, =0xFF815FFC \n"
  407. -               "BLLT   _err_init_task \n"
  408. -               //"ADR  R0, a_term \n"                  // "/_term"
  409. -               "LDR    R0, =0xFF81600C \n"
  410. -               "BL sub_FF815C00 \n"
  411. -               "CMP    R0, #0 \n"
  412. -               //"ADRLT    R0, aTermdevicecrea \n"     // "termDeviceCreate"
  413. -               "LDRLT  R0, =0xFF816014 \n"
  414. -               "BLLT   _err_init_task \n"
  415. -               //"ADR  R0, a_term \n"                  // "/_term"
  416. -               "LDR    R0, =0xFF81600C \n"
  417. -               "BL sub_FF813CA8 \n"
  418. -               "CMP    R0, #0 \n"
  419. -               //"ADRLT    R0, aStdiosetup \n"         // "stdioSetup"
  420. -               "LDRLT  R0, =0xFF816028 \n"
  421. -               "BLLT   _err_init_task \n"
  422. -               "BL sub_FF819D00 \n"
  423. -               "CMP    R0, #0 \n"
  424. -               //"ADRLT    R0, aStdlibsetup \n"        // "stdlibSetup"
  425. -               "LDRLT  R0, =0xFF816034 \n"
  426. -               "BLLT   _err_init_task \n"
  427. -               "BL sub_FF811690 \n"
  428. -               "CMP    R0, #0 \n"
  429. -               //"ADRLT    R0, aArmlib_setup \n"       // "armlib_setup"
  430. -               "LDRLT  R0, =0xFF816040 \n"
  431. -               "BLLT   _err_init_task \n"
  432. -               "LDMFD  SP!, {R4,LR} \n"
  433. +"    LDR     R0, =0xFF81600C \n"
  434. +"    BL      sub_FF815C00 \n"
  435. +"    CMP     R0, #0 \n"
  436. +"    LDRLT   R0, =0xFF816014 \n"              
  437. +"BLLT  _err_init_task \n"
  438. +"    LDR     R0, =0xFF81600C \n"
  439. +"    BL      sub_FF813CA8 \n"
  440. +"    CMP     R0, #0 \n"
  441. +"    LDRLT   R0, =0xFF816028 \n"              
  442. +"BLLT  _err_init_task \n"
  443. +"    BL      sub_FF819D00 \n"
  444. +"    CMP     R0, #0 \n"
  445. +"    LDRLT   R0, =0xFF816034 \n"              
  446. +"BLLT  _err_init_task \n"
  447. +"    BL      sub_FF811690 \n"
  448. +"    CMP     R0, #0 \n"
  449. +"    LDRLT   R0, =0xFF816040 \n"              
  450. +"BLLT  _err_init_task \n"
  451. +"    LDMFD   SP!, {R4,LR} \n"
  452.                 //"B    sub_FF81FCB4 \n"                // original taskcreate_Startup
  453.                 "B  taskcreate_Startup_my \n"           // --> patched
  454.          );
  455. @@ -347,53 +337,54 @@
  456.  // FF81FCB4
  457.  
  458.     asm volatile (
  459. -               "STMFD   SP!, {R3-R9,LR} \n"
  460. -               "MOV     R6, #0 \n"
  461. -               //"BL      sub_FF834B44 \n"             // j_nullsub_107
  462. -               "BL      sub_FF83D9B0 \n"
  463. -               "LDR     R9, =0xC0220000 \n"
  464. -               "MOVS    R7, R0 \n"
  465. -               "MOV     R8, #1 \n"
  466. -               "BNE     loc_FF00FCE8 \n"
  467. -               "BL      sub_FF8372F0 \n"
  468. -               "CMP     R0, #0 \n"
  469. -               "BEQ     loc_FF00FCE8 \n"
  470. -               "LDR     R0, [R9,#0x12C] \n"
  471. -               "BIC     R5, R8, R0 \n"
  472. -               "LDR     R0, [R9,#0x128] \n"
  473. -               "BIC     R4, R8, R0 \n"
  474. -               "BL      sub_FF833DDC \n"
  475. -               "CMP     R0, #1 \n"
  476. -               "MOVEQ   R6, #1 \n"
  477. -               "ORR     R0, R4, R5 \n"
  478. -               "ORRS    R0, R0, R6 \n"
  479. -               "BNE     loc_FF00FCF8 \n"
  480. -               "BL      sub_FF834190 \n"
  481. -               "MOV     R0, #0x44 \n"
  482. -               "STR     R0, [R9,#0x1C] \n"
  483. -               "BL      sub_FF834380 \n"
  484. -   "loc_FF00FCE4: \n"
  485. -               "B       loc_FF00FCE4 \n"
  486. -   "loc_FF00FCE8: \n"
  487. -               "LDR     R0, [R9,#0x128] \n"
  488. -               "BIC     R4, R8, R0 \n"
  489. -               "LDR     R0, [R9,#0x12C] \n"
  490. -               "BIC     R5, R8, R0 \n"
  491. -   "loc_FF00FCF8: \n"
  492. -               "MOV     R3, R6 \n"
  493. -               "MOV     R2, R7 \n"
  494. -               "MOV     R1, R5 \n"
  495. -               "MOV     R0, R4 \n"
  496. -               //"BL      sub_FF834B4C \n"
  497. -               //"BL      sub_FF834B48 \n"             //j_nullsub_108
  498. -               "BL      sub_FF83BB7C \n"
  499. -               "LDR     R1, =0x3CE000 \n"
  500. -               "MOV     R0, #0 \n"
  501. -               "BL      sub_FF83BFEC \n"
  502. -               "BL      sub_FF83BD94 \n"
  503. -               "MOV     R3, #0 \n"
  504. -               "STR     R3, [SP] \n"
  505. -               //"LDR     R3, =task_Startup \n"        // original task_Startup at 0xFF81FBF4
  506. +
  507. +"    STMFD   SP!, {R3-R9,LR} \n"
  508. +"    MOV     R6, #0 \n"
  509. +//"    BL      sub_FF834B44 \n"
  510. +"    BL      sub_FF83D9B0 \n"
  511. +"    LDR     R9, =0xC0220000 \n"
  512. +"    MOVS    R7, R0 \n"
  513. +"    MOV     R8, #1 \n"
  514. +"    BNE     loc_FF81FD1C \n"
  515. +"    BL      sub_FF8372F0 \n"
  516. +"    CMP     R0, #0 \n"
  517. +"    BEQ     loc_FF81FD1C \n"
  518. +"    LDR     R0, [R9, #0x12C] \n"
  519. +"    BIC     R5, R8, R0 \n"
  520. +"    LDR     R0, [R9, #0x128] \n"
  521. +"    BIC     R4, R8, R0 \n"
  522. +"    BL      sub_FF833DDC \n"
  523. +"    CMP     R0, #1 \n"
  524. +"    MOVEQ   R6, #1 \n"
  525. +"    ORR     R0, R4, R5 \n"
  526. +"    ORRS    R0, R0, R6 \n"
  527. +"    BNE     loc_FF81FD2C \n"
  528. +"    BL      sub_FF834190 \n"
  529. +"    MOV     R0, #0x44 \n"
  530. +"    STR     R0, [R9, #0x1C] \n"
  531. +"    BL      sub_FF834380 \n"
  532. +"loc_FF81FD18:\n"
  533. +"    B       loc_FF81FD18 \n"
  534. +"loc_FF81FD1C:\n"
  535. +"    LDR     R0, [R9, #0x128] \n"
  536. +"    BIC     R4, R8, R0 \n"
  537. +"    LDR     R0, [R9, #0x12C] \n"
  538. +"    BIC     R5, R8, R0 \n"
  539. +"loc_FF81FD2C:\n"
  540. +"    MOV     R3, R6 \n"
  541. +"    MOV     R2, R7 \n"
  542. +"    MOV     R1, R5 \n"
  543. +"    MOV     R0, R4 \n"
  544. +//"    BL      sub_FF834B4C \n" //--->related to powerup
  545. +//"    BL      sub_FF834B48 \n"
  546. +"    BL      sub_FF83BB7C \n"
  547. +"    LDR     R1, =0x3CE000 \n"
  548. +"    MOV     R0, #0 \n"
  549. +"    BL      sub_FF83BFEC \n"
  550. +"    BL      sub_FF83BD94 \n"
  551. +"    MOV     R3, #0 \n"
  552. +"    STR     R3, [SP] \n"
  553. +//"    LDR     R3, =0xFF81FBF4 \n"
  554.                 "LDR     R3, =task_Startup_my \n"       // --> patched
  555.                 "B       sub_FF81FD64 \n"               // --> continue in firmware
  556.       );
  557. @@ -404,58 +395,59 @@
  558.  -----------------------------------------------------------------------*/
  559.  void __attribute__((naked,noinline)) task_Startup_my() {
  560.  // 0xFF81FBF4
  561. -  
  562.     asm volatile (
  563. -               "STMFD   SP!, {R4,LR} \n"
  564. -               "BL      sub_FF816588 \n"
  565. -               "BL      sub_FF835D30 \n"
  566. -               "BL      sub_FF833DEC \n"
  567. -               //"BL      sub_FF83D9F8 \n"             // j_nullsub_110
  568. -               "BL      sub_FF83DBE4 \n"
  569. -               "BL      sub_FF834F90 \n"
  570. -               "BL      sub_FF833870 \n"
  571. -               //"BL      sub_FF83DA8C \n"             // start diskboot.bin
  572. -               "BL      sub_FF83DD90 \n"
  573. -               "BL      sub_FF816488\n"
  574. -               "BL      sub_FF836A50\n"                // taskcreate_PwrCnt()
  575. -               "LDR     R1, =0x7C007C00\n"
  576. -               "LDR     R0, =0xC0F1800C\n"
  577. -                "BL      sub_FF835D3C\n"
  578. -               "LDR     R0, =0xC0F18010\n"
  579. -               "MOV     R1, #0\n"
  580. -                "BL      sub_FF835D3C\n"
  581. -               "LDR     R0, =0xC0F18018\n"
  582. -               "MOV     R1, #0\n"
  583. -                "BL      sub_FF835D3C\n"                
  584. -               "LDR     R0, =0xC0F1801C\n"
  585. -               "MOV     R1, #1000\n"
  586. -                "BL      sub_FF835D3C\n"
  587. -               "LDR     R0, =0xC0F18020\n"
  588. -               "MOV     R1, #8\n"
  589. -                "BL      sub_FF835D3C\n"
  590. -               "LDR     R0, =0xC022D06C\n"
  591. -               "MOV     R1, #0xE000000\n"
  592. -                "BL      sub_FF835D3C\n"
  593. -                "BL      sub_FF8164C0\n"
  594. -               "BL      sub_FF832280\n"
  595. -                "BL      sub_FF83DC14\n"               // taskcreate_WDT()
  596. -                "BL      sub_FF83B320\n"
  597. -                "BL      sub_FF83DD94\n"               // taskcreate_CtrlSrv()
  598. +"    STMFD   SP!, {R4,LR} \n"
  599. +"    BL      sub_FF816588 \n"
  600. +"    BL      sub_FF835D30 \n"
  601. +"    BL      sub_FF833DEC \n"
  602. +//"    BL      sub_FF83D9F8 \n"
  603. +"    BL      sub_FF83DBE4 \n"
  604. +"    BL      sub_FF834F90 \n"
  605. +"    BL      sub_FF833870 \n"
  606. +//"    BL      sub_FF83DA8C \n" //diskboot.bin
  607. +"    BL      sub_FF83DD90 \n"
  608. +"    BL      sub_FF816488 \n"
  609. +"    BL      sub_FF836A50 \n"
  610. +"    LDR     R1, =0x7C007C00 \n"
  611. +"    LDR     R0, =0xC0F1800C \n"
  612. +"    BL      sub_FF835D3C \n"
  613. +"    LDR     R0, =0xC0F18010 \n"
  614. +"    MOV     R1, #0 \n"
  615. +"    BL      sub_FF835D3C \n"
  616. +"    LDR     R0, =0xC0F18018 \n"
  617. +"    MOV     R1, #0 \n"
  618. +"    BL      sub_FF835D3C \n"
  619. +"    LDR     R0, =0xC0F1801C \n"
  620. +"    MOV     R1, #0x1000 \n"
  621. +"    BL      sub_FF835D3C \n"
  622. +"    LDR     R0, =0xC0F18020 \n"
  623. +"    MOV     R1, #8 \n"
  624. +"    BL      sub_FF835D3C \n"
  625. +"    LDR     R0, =0xC022D06C \n"
  626. +"    MOV     R1, #0xE000000 \n"
  627. +"    BL      sub_FF835D3C \n"
  628. +"    BL      sub_FF8164C0 \n"
  629. +"    BL      sub_FF832280 \n"
  630. +"    BL      sub_FF83DC14 \n"
  631. +"    BL      sub_FF83B320 \n"
  632. +"    BL      sub_FF83DD94 \n"
  633. +//"    BL      sub_FF8349EC \n" //task
  634.                 "BL      CreateTask_spytask\n"          // added to create the Spytask (afaik the main CHDK Task)
  635. -                //"BL      sub_FF8349EC\n"             // original taskcreate_PhySw()
  636.                  "BL      taskcreatePhySw_my\n"         // --> patched taskcreate_PhySw()
  637. -               "BL sub_FF83927C \n"                      
  638. -               "BL sub_FF83DDAC \n"                      
  639. -               //"BL   sub_FF831678 \n"                // j_nullsub_101
  640. -               "BL sub_FF8331E0 \n"                      
  641. -               "BL sub_FF83D76C \n"                      
  642. -               "BL sub_FF833824 \n"                      
  643. -               "BL sub_FF83317C \n"                      
  644. -               "BL sub_FF8322B4 \n"                      
  645. -               "BL sub_FF83E9AC \n"                      
  646. -               "BL sub_FF833140 \n"                
  647. -               "LDMFD  SP!, {R4,LR} \n"                  
  648. -               "B  sub_FF8166A8 \n"                    // --> continue in firmware  
  649. +"    BL      sub_FF83927C \n"
  650. +"    BL      sub_FF83DDAC \n"
  651. +//"    BL      sub_FF831678 \n" //NULL
  652. +"    BL      sub_FF8331E0 \n"
  653. +"    BL      sub_FF83D76C \n"
  654. +"    BL      sub_FF833824 \n"
  655. +"    BL      sub_FF83317C \n"
  656. +"    BL      sub_FF8322B4 \n"
  657. +"    BL      sub_FF83E9AC \n"
  658. +"    BL      sub_FF833140 \n"
  659. +"    LDMFD   SP!, {R4,LR} \n"
  660. +"    B       sub_FF8166A8 \n"
  661. +
  662. +
  663.       );
  664.  }
  665.  
  666. Index: platform/ixus220_elph300hs/sub/101a/stubs_auto.S
  667. ===================================================================
  668. --- platform/ixus220_elph300hs/sub/101a/stubs_auto.S    (revision 1681)
  669. +++ platform/ixus220_elph300hs/sub/101a/stubs_auto.S    (working copy)
  670. @@ -3,12 +3,12 @@
  671.  
  672.  #include "stubs_asm.h"
  673.  
  674. -STUB(FF000358)
  675. -STUB(FF0011B0)
  676.  STUB(FF1847C0)
  677.  STUB(FF1847F0)
  678.  STUB(FF184F18)
  679. +STUB(FF810358)
  680.  STUB(FF810B28)
  681. +STUB(FF8111B0)
  682.  STUB(FF81124C)
  683.  STUB(FF811690)
  684.  STUB(FF813CA8)
RAW Paste Data