blob: 5a911670d27b8ed5b0f060f6f1f59f075d920e5b [file] [log] [blame]
Bill Buzbee7c58bd42016-01-20 20:46:01 +00001/*
2 * Inter-instruction transfer stub. Call out to MterpCheckBefore to handle
3 * any interesting requests and then jump to the real instruction
4 * handler. Unlike the Arm handler, we can't do this as a tail call
5 * because rIBASE is caller save and we need to reload it.
6 *
7 * Note that unlike in the Arm implementation, we should never arrive
8 * here with a zero breakFlag because we always refresh rIBASE on
9 * return.
10 */
11 .extern MterpCheckBefore
12 EXPORT_PC
13
14 movl rSELF, %ecx
15 movl %ecx, OUT_ARG0(%esp)
16 leal OFF_FP_SHADOWFRAME(rFP), %eax
17 movl %eax, OUT_ARG1(%esp)
Serguei Katkov05dfaaa2016-01-28 08:21:26 +060018 call SYMBOL(MterpCheckBefore) # (self, shadow_frame)
Bill Buzbee7c58bd42016-01-20 20:46:01 +000019 REFRESH_IBASE
20 jmp .L_op_nop+(${opnum}*${handler_size_bytes})