1a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee/* 29a3147c7412f4794434b4c2604aa2ba784867774buzbee * Inter-instruction transfer stub. Call out to dvmCheckBefore to handle 3a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee * any interesting requests and then jump to the real instruction 49a3147c7412f4794434b4c2604aa2ba784867774buzbee * handler. Note that the call to dvmCheckBefore is done as a tail call. 59a3147c7412f4794434b4c2604aa2ba784867774buzbee * rIBASE updates won't be seen until a refresh, and we can tell we have a 69a3147c7412f4794434b4c2604aa2ba784867774buzbee * stale rIBASE if breakFlags==0. Always refresh rIBASE here, and then 79a3147c7412f4794434b4c2604aa2ba784867774buzbee * bail to the real handler if breakFlags==0. 8a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee */ 99a3147c7412f4794434b4c2604aa2ba784867774buzbee ldrb r3, [rSELF, #offThread_breakFlags] 10a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee adrl lr, dvmAsmInstructionStart + (${opnum} * 64) 119a3147c7412f4794434b4c2604aa2ba784867774buzbee ldr rIBASE, [rSELF, #offThread_curHandlerTable] 129a3147c7412f4794434b4c2604aa2ba784867774buzbee cmp r3, #0 139a3147c7412f4794434b4c2604aa2ba784867774buzbee bxeq lr @ nothing to do - jump to real handler 149a3147c7412f4794434b4c2604aa2ba784867774buzbee EXPORT_PC() 15a7d59bbafea5430fe81fc21ba94ddf6f6a63b0b3buzbee mov r0, rPC @ arg0 169a3147c7412f4794434b4c2604aa2ba784867774buzbee mov r1, rFP @ arg1 179a3147c7412f4794434b4c2604aa2ba784867774buzbee mov r2, rSELF @ arg2 189a3147c7412f4794434b4c2604aa2ba784867774buzbee b dvmCheckBefore @ (dPC,dFP,self) tail call 19