196516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFaddenHANDLE_OPCODE(OP_BREAKPOINT) 296516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden { 396516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden /* 496516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * Restart this instruction with the original opcode. We do 596516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * this by simply jumping to the handler. 696516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * 796516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * It's probably not necessary to update "inst", but we do it 896516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * for the sake of anything that needs to do disambiguation in a 996516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * common handler with INST_INST. 1096516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * 1199e3e6e72e3471eb85fc2e405866392b01c080febuzbee * The breakpoint itself is handled over in updateDebugger(), 1296516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * because we need to detect other events (method entry, single 1396516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * step) and report them in the same event packet, and we're not 1496516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * yet handling those through breakpoint instructions. By the 1596516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * time we get here, the breakpoint has already been handled and 1696516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden * the thread resumed. 1796516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden */ 189a1f81699cc05b58378ffb9aadb4e97677943791Dan Bornstein u1 originalOpcode = dvmGetOriginalOpcode(pc); 1992c1f6f1b4249e4e379452ee7b49f027052bf4ceSteve Block ALOGV("+++ break 0x%02x (0x%04x -> 0x%04x)", originalOpcode, inst, 209a1f81699cc05b58378ffb9aadb4e97677943791Dan Bornstein INST_REPLACE_OP(inst, originalOpcode)); 219a1f81699cc05b58378ffb9aadb4e97677943791Dan Bornstein inst = INST_REPLACE_OP(inst, originalOpcode); 229a1f81699cc05b58378ffb9aadb4e97677943791Dan Bornstein FINISH_BKPT(originalOpcode); 2396516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFadden } 2496516932f1557d8f48a8b2dbbb885af01a11ef6eAndy McFaddenOP_END 25