1/* 2 * Inter-instruction transfer stub. Call out to dvmCheckBefore to handle 3 * any interesting requests and then jump to the real instruction 4 * handler. Note that the call to dvmCheckBefore is done as a tail call. 5 * rIBASE updates won't be seen until a refresh, and we can tell we have a 6 * stale rIBASE if breakFlags==0. Always refresh rIBASE here, and then 7 * bail to the real handler if breakFlags==0. 8 */ 9 ldrb r3, [rSELF, #offThread_breakFlags] 10 adrl lr, dvmAsmInstructionStart + (${opnum} * 64) 11 ldr rIBASE, [rSELF, #offThread_curHandlerTable] 12 cmp r3, #0 13 bxeq lr @ nothing to do - jump to real handler 14 EXPORT_PC() 15 mov r0, rPC @ arg0 16 mov r1, rFP @ arg1 17 mov r2, rSELF @ arg2 18 b dvmCheckBefore @ (dPC,dFP,self) tail call 19