• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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