1 " STMFD SP!, {R0}\n" 2 //R3 = Pointer to task function to create 3 /*** INSTALL capt_seq_task() hook ***/ 4 " LDR R0, =task_CaptSeq\n" // DryOS original code function ptr. 5 " CMP R0, R3\n" // is the given taskptr equal to our searched function? 6 " LDREQ R3, =capt_seq_task\n" // if so replace with our task function base ptr. 7 " BEQ exitHook\n" // below compares not necessary if this check has found something. 8 9 /*** INSTALL exp_drv_task() hook ***/ 10 " LDR R0, =task_ExpDrv\n" 11 " CMP R0, R3\n" 12 " LDREQ R3, =exp_drv_task\n" 13 " BEQ exitHook\n" 14 15 /*** INSTALL filewrite() hook ***/ 16 " LDR R0, =task_FileWrite\n" 17 " CMP R0, R3\n" 18 " LDREQ R3, =filewritetask\n" 19 " BEQ exitHook\n" 20 21 /*** INSTALL movie_record_task() hook ***/ 22 //" LDR R0, =task_MovieRecord\n" 23 //" CMP R0, R3\n" 24 //" LDREQ R3, =movie_record_task\n" 25 //" BEQ exitHook\n" 26 27 /*** INSTALL init_file_modules_task() hook ***/ 28 " LDR R0, =task_InitFileModules\n" 29 " CMP R0, R3\n" 30 " LDREQ R3, =init_file_modules_task\n" 31 32 /*** INSTALL touch_task() hook ***/ 33 " LDR R0, =task_TouchPanel\n" 34 " CMP R0, R3\n" 35 " LDREQ R3, =task_TouchPanel_my\n" 36 37 "exitHook:\n" // restore overwritten registers 38 " LDMFD SP!, {R0}\n" // Execute overwritten instructions from original code, then jump to firmware