blob: 69f2ae5ce02fe184cd84a3ed965997b8d3275de1 [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
.text
.global dvmMterpStdRun
.type dvmMterpStdRun, %function
/*
* bool dvmMterpStdRun(MterpGlue* glue)
*
* Interpreter entry point. Returns changeInterp.
*
*/
dvmMterpStdRun:
movl 4(%esp), %ecx # get incoming rGLUE
push %ebp # save caller base pointer
push %ecx # save rGLUE at (%ebp)
movl %esp, %ebp # set our %ebp
/*
* At this point we've allocated two slots on the stack
* via push and stack is 8-byte aligned. Allocate space
* for 8 spill slots, 3 local slots, 5 arg slots + 2 slots for
* padding to bring us to 16-byte alignment
*/
subl $$(FRAME_SIZE-8), %esp
/* Spill callee save regs */
movl %edi,EDI_SPILL(%ebp)
movl %esi,ESI_SPILL(%ebp)
movl %ebx,EBX_SPILL(%ebp)
/* Set up "named" registers */
movl offGlue_pc(%ecx),rPC
movl offGlue_fp(%ecx),rFP
/* Remember %esp for future "longjmp" */
movl %esp,offGlue_bailPtr(%ecx)
/* How to start? */
movb offGlue_entryPoint(%ecx),%al
/* Normal start? */
cmpb $$kInterpEntryInstr,%al
jne .Lnot_instr
/* Normal case: start executing the instruction at rPC */
FETCH_INST
GOTO_NEXT
.Lnot_instr:
/* Reset to normal case */
movb $$kInterpEntryInstr,offGlue_entryPoint(%ecx)
cmpb $$kInterpEntryReturn,%al
je common_returnFromMethod
cmpb $$kInterpEntryThrow,%al
je common_exceptionThrown
movzx %al,%eax
movl %eax,OUT_ARG1(%esp)
movl $$.LstrBadEntryPoint,OUT_ARG0(%esp)
call printf
call dvmAbort
/* Not reached */
.global dvmMterpStdBail
.type dvmMterpStdBail, %function
/*
* void dvmMterpStdBail(MterpGlue* glue, bool changeInterp)
*
* Restore the stack pointer and PC from the save point established on entry.
* This is essentially the same as a longjmp, but should be cheaper. The
* last instruction causes us to return to whoever called dvmMterpStdRun.
*
* We're not going to build a standard frame here, so the arg accesses will
* look a little strange.
*
* On entry:
* esp+4 (arg0) MterpGlue* glue
* esp+8 (arg1) bool changeInterp
*/
dvmMterpStdBail:
movl 4(%esp),%ecx # grab glue
movl 8(%esp),%eax # changeInterp to return reg
movl offGlue_bailPtr(%ecx),%esp # Restore "setjmp" esp
movl %esp,%ebp
addl $$(FRAME_SIZE-8), %ebp # Restore %ebp at point of setjmp
movl EDI_SPILL(%ebp),%edi
movl ESI_SPILL(%ebp),%esi
movl EBX_SPILL(%ebp),%ebx
movl PREV_FP(%ebp),%ebp # restore caller's ebp
addl $$FRAME_SIZE,%esp # strip frame
ret # return to dvmMterpStdRun's caller
/*
* Strings
*/
.section .rodata
.LstrBadEntryPoint:
.asciz "Bad entry point %d\n"
/*
* FIXME: Should have the config/rebuild mechanism generate this
* for targets that need it.
*/
/* Jump table */
dvmAsmInstructionJmpTable = .LdvmAsmInstructionJmpTable
.LdvmAsmInstructionJmpTable:
.long .L_OP_NOP
.long .L_OP_MOVE
.long .L_OP_MOVE_FROM16
.long .L_OP_MOVE_16
.long .L_OP_MOVE_WIDE
.long .L_OP_MOVE_WIDE_FROM16
.long .L_OP_MOVE_WIDE_16
.long .L_OP_MOVE_OBJECT
.long .L_OP_MOVE_OBJECT_FROM16
.long .L_OP_MOVE_OBJECT_16
.long .L_OP_MOVE_RESULT
.long .L_OP_MOVE_RESULT_WIDE
.long .L_OP_MOVE_RESULT_OBJECT
.long .L_OP_MOVE_EXCEPTION
.long .L_OP_RETURN_VOID
.long .L_OP_RETURN
.long .L_OP_RETURN_WIDE
.long .L_OP_RETURN_OBJECT
.long .L_OP_CONST_4
.long .L_OP_CONST_16
.long .L_OP_CONST
.long .L_OP_CONST_HIGH16
.long .L_OP_CONST_WIDE_16
.long .L_OP_CONST_WIDE_32
.long .L_OP_CONST_WIDE
.long .L_OP_CONST_WIDE_HIGH16
.long .L_OP_CONST_STRING
.long .L_OP_CONST_STRING_JUMBO
.long .L_OP_CONST_CLASS
.long .L_OP_MONITOR_ENTER
.long .L_OP_MONITOR_EXIT
.long .L_OP_CHECK_CAST
.long .L_OP_INSTANCE_OF
.long .L_OP_ARRAY_LENGTH
.long .L_OP_NEW_INSTANCE
.long .L_OP_NEW_ARRAY
.long .L_OP_FILLED_NEW_ARRAY
.long .L_OP_FILLED_NEW_ARRAY_RANGE
.long .L_OP_FILL_ARRAY_DATA
.long .L_OP_THROW
.long .L_OP_GOTO
.long .L_OP_GOTO_16
.long .L_OP_GOTO_32
.long .L_OP_PACKED_SWITCH
.long .L_OP_SPARSE_SWITCH
.long .L_OP_CMPL_FLOAT
.long .L_OP_CMPG_FLOAT
.long .L_OP_CMPL_DOUBLE
.long .L_OP_CMPG_DOUBLE
.long .L_OP_CMP_LONG
.long .L_OP_IF_EQ
.long .L_OP_IF_NE
.long .L_OP_IF_LT
.long .L_OP_IF_GE
.long .L_OP_IF_GT
.long .L_OP_IF_LE
.long .L_OP_IF_EQZ
.long .L_OP_IF_NEZ
.long .L_OP_IF_LTZ
.long .L_OP_IF_GEZ
.long .L_OP_IF_GTZ
.long .L_OP_IF_LEZ
.long .L_OP_UNUSED_3E
.long .L_OP_UNUSED_3F
.long .L_OP_UNUSED_40
.long .L_OP_UNUSED_41
.long .L_OP_UNUSED_42
.long .L_OP_UNUSED_43
.long .L_OP_AGET
.long .L_OP_AGET_WIDE
.long .L_OP_AGET_OBJECT
.long .L_OP_AGET_BOOLEAN
.long .L_OP_AGET_BYTE
.long .L_OP_AGET_CHAR
.long .L_OP_AGET_SHORT
.long .L_OP_APUT
.long .L_OP_APUT_WIDE
.long .L_OP_APUT_OBJECT
.long .L_OP_APUT_BOOLEAN
.long .L_OP_APUT_BYTE
.long .L_OP_APUT_CHAR
.long .L_OP_APUT_SHORT
.long .L_OP_IGET
.long .L_OP_IGET_WIDE
.long .L_OP_IGET_OBJECT
.long .L_OP_IGET_BOOLEAN
.long .L_OP_IGET_BYTE
.long .L_OP_IGET_CHAR
.long .L_OP_IGET_SHORT
.long .L_OP_IPUT
.long .L_OP_IPUT_WIDE
.long .L_OP_IPUT_OBJECT
.long .L_OP_IPUT_BOOLEAN
.long .L_OP_IPUT_BYTE
.long .L_OP_IPUT_CHAR
.long .L_OP_IPUT_SHORT
.long .L_OP_SGET
.long .L_OP_SGET_WIDE
.long .L_OP_SGET_OBJECT
.long .L_OP_SGET_BOOLEAN
.long .L_OP_SGET_BYTE
.long .L_OP_SGET_CHAR
.long .L_OP_SGET_SHORT
.long .L_OP_SPUT
.long .L_OP_SPUT_WIDE
.long .L_OP_SPUT_OBJECT
.long .L_OP_SPUT_BOOLEAN
.long .L_OP_SPUT_BYTE
.long .L_OP_SPUT_CHAR
.long .L_OP_SPUT_SHORT
.long .L_OP_INVOKE_VIRTUAL
.long .L_OP_INVOKE_SUPER
.long .L_OP_INVOKE_DIRECT
.long .L_OP_INVOKE_STATIC
.long .L_OP_INVOKE_INTERFACE
.long .L_OP_UNUSED_73
.long .L_OP_INVOKE_VIRTUAL_RANGE
.long .L_OP_INVOKE_SUPER_RANGE
.long .L_OP_INVOKE_DIRECT_RANGE
.long .L_OP_INVOKE_STATIC_RANGE
.long .L_OP_INVOKE_INTERFACE_RANGE
.long .L_OP_UNUSED_79
.long .L_OP_UNUSED_7A
.long .L_OP_NEG_INT
.long .L_OP_NOT_INT
.long .L_OP_NEG_LONG
.long .L_OP_NOT_LONG
.long .L_OP_NEG_FLOAT
.long .L_OP_NEG_DOUBLE
.long .L_OP_INT_TO_LONG
.long .L_OP_INT_TO_FLOAT
.long .L_OP_INT_TO_DOUBLE
.long .L_OP_LONG_TO_INT
.long .L_OP_LONG_TO_FLOAT
.long .L_OP_LONG_TO_DOUBLE
.long .L_OP_FLOAT_TO_INT
.long .L_OP_FLOAT_TO_LONG
.long .L_OP_FLOAT_TO_DOUBLE
.long .L_OP_DOUBLE_TO_INT
.long .L_OP_DOUBLE_TO_LONG
.long .L_OP_DOUBLE_TO_FLOAT
.long .L_OP_INT_TO_BYTE
.long .L_OP_INT_TO_CHAR
.long .L_OP_INT_TO_SHORT
.long .L_OP_ADD_INT
.long .L_OP_SUB_INT
.long .L_OP_MUL_INT
.long .L_OP_DIV_INT
.long .L_OP_REM_INT
.long .L_OP_AND_INT
.long .L_OP_OR_INT
.long .L_OP_XOR_INT
.long .L_OP_SHL_INT
.long .L_OP_SHR_INT
.long .L_OP_USHR_INT
.long .L_OP_ADD_LONG
.long .L_OP_SUB_LONG
.long .L_OP_MUL_LONG
.long .L_OP_DIV_LONG
.long .L_OP_REM_LONG
.long .L_OP_AND_LONG
.long .L_OP_OR_LONG
.long .L_OP_XOR_LONG
.long .L_OP_SHL_LONG
.long .L_OP_SHR_LONG
.long .L_OP_USHR_LONG
.long .L_OP_ADD_FLOAT
.long .L_OP_SUB_FLOAT
.long .L_OP_MUL_FLOAT
.long .L_OP_DIV_FLOAT
.long .L_OP_REM_FLOAT
.long .L_OP_ADD_DOUBLE
.long .L_OP_SUB_DOUBLE
.long .L_OP_MUL_DOUBLE
.long .L_OP_DIV_DOUBLE
.long .L_OP_REM_DOUBLE
.long .L_OP_ADD_INT_2ADDR
.long .L_OP_SUB_INT_2ADDR
.long .L_OP_MUL_INT_2ADDR
.long .L_OP_DIV_INT_2ADDR
.long .L_OP_REM_INT_2ADDR
.long .L_OP_AND_INT_2ADDR
.long .L_OP_OR_INT_2ADDR
.long .L_OP_XOR_INT_2ADDR
.long .L_OP_SHL_INT_2ADDR
.long .L_OP_SHR_INT_2ADDR
.long .L_OP_USHR_INT_2ADDR
.long .L_OP_ADD_LONG_2ADDR
.long .L_OP_SUB_LONG_2ADDR
.long .L_OP_MUL_LONG_2ADDR
.long .L_OP_DIV_LONG_2ADDR
.long .L_OP_REM_LONG_2ADDR
.long .L_OP_AND_LONG_2ADDR
.long .L_OP_OR_LONG_2ADDR
.long .L_OP_XOR_LONG_2ADDR
.long .L_OP_SHL_LONG_2ADDR
.long .L_OP_SHR_LONG_2ADDR
.long .L_OP_USHR_LONG_2ADDR
.long .L_OP_ADD_FLOAT_2ADDR
.long .L_OP_SUB_FLOAT_2ADDR
.long .L_OP_MUL_FLOAT_2ADDR
.long .L_OP_DIV_FLOAT_2ADDR
.long .L_OP_REM_FLOAT_2ADDR
.long .L_OP_ADD_DOUBLE_2ADDR
.long .L_OP_SUB_DOUBLE_2ADDR
.long .L_OP_MUL_DOUBLE_2ADDR
.long .L_OP_DIV_DOUBLE_2ADDR
.long .L_OP_REM_DOUBLE_2ADDR
.long .L_OP_ADD_INT_LIT16
.long .L_OP_RSUB_INT
.long .L_OP_MUL_INT_LIT16
.long .L_OP_DIV_INT_LIT16
.long .L_OP_REM_INT_LIT16
.long .L_OP_AND_INT_LIT16
.long .L_OP_OR_INT_LIT16
.long .L_OP_XOR_INT_LIT16
.long .L_OP_ADD_INT_LIT8
.long .L_OP_RSUB_INT_LIT8
.long .L_OP_MUL_INT_LIT8
.long .L_OP_DIV_INT_LIT8
.long .L_OP_REM_INT_LIT8
.long .L_OP_AND_INT_LIT8
.long .L_OP_OR_INT_LIT8
.long .L_OP_XOR_INT_LIT8
.long .L_OP_SHL_INT_LIT8
.long .L_OP_SHR_INT_LIT8
.long .L_OP_USHR_INT_LIT8
.long .L_OP_IGET_VOLATILE
.long .L_OP_IPUT_VOLATILE
.long .L_OP_SGET_VOLATILE
.long .L_OP_SPUT_VOLATILE
.long .L_OP_IGET_OBJECT_VOLATILE
.long .L_OP_IGET_WIDE_VOLATILE
.long .L_OP_IPUT_WIDE_VOLATILE
.long .L_OP_SGET_WIDE_VOLATILE
.long .L_OP_SPUT_WIDE_VOLATILE
.long .L_OP_BREAKPOINT
.long .L_OP_THROW_VERIFICATION_ERROR
.long .L_OP_EXECUTE_INLINE
.long .L_OP_EXECUTE_INLINE_RANGE
.long .L_OP_INVOKE_OBJECT_INIT
.long .L_OP_RETURN_VOID_BARRIER
.long .L_OP_IGET_QUICK
.long .L_OP_IGET_WIDE_QUICK
.long .L_OP_IGET_OBJECT_QUICK
.long .L_OP_IPUT_QUICK
.long .L_OP_IPUT_WIDE_QUICK
.long .L_OP_IPUT_OBJECT_QUICK
.long .L_OP_INVOKE_VIRTUAL_QUICK
.long .L_OP_INVOKE_VIRTUAL_QUICK_RANGE
.long .L_OP_INVOKE_SUPER_QUICK
.long .L_OP_INVOKE_SUPER_QUICK_RANGE
.long .L_OP_IPUT_OBJECT_VOLATILE
.long .L_OP_SGET_OBJECT_VOLATILE
.long .L_OP_SPUT_OBJECT_VOLATILE
.long .L_OP_DISPATCH_FF
.long .L_OP_CONST_CLASS_JUMBO
.long .L_OP_CHECK_CAST_JUMBO
.long .L_OP_INSTANCE_OF_JUMBO
.long .L_OP_NEW_INSTANCE_JUMBO
.long .L_OP_NEW_ARRAY_JUMBO
.long .L_OP_FILLED_NEW_ARRAY_JUMBO
.long .L_OP_IGET_JUMBO
.long .L_OP_IGET_WIDE_JUMBO
.long .L_OP_IGET_OBJECT_JUMBO
.long .L_OP_IGET_BOOLEAN_JUMBO
.long .L_OP_IGET_BYTE_JUMBO
.long .L_OP_IGET_CHAR_JUMBO
.long .L_OP_IGET_SHORT_JUMBO
.long .L_OP_IPUT_JUMBO
.long .L_OP_IPUT_WIDE_JUMBO
.long .L_OP_IPUT_OBJECT_JUMBO
.long .L_OP_IPUT_BOOLEAN_JUMBO
.long .L_OP_IPUT_BYTE_JUMBO
.long .L_OP_IPUT_CHAR_JUMBO
.long .L_OP_IPUT_SHORT_JUMBO
.long .L_OP_SGET_JUMBO
.long .L_OP_SGET_WIDE_JUMBO
.long .L_OP_SGET_OBJECT_JUMBO
.long .L_OP_SGET_BOOLEAN_JUMBO
.long .L_OP_SGET_BYTE_JUMBO
.long .L_OP_SGET_CHAR_JUMBO
.long .L_OP_SGET_SHORT_JUMBO
.long .L_OP_SPUT_JUMBO
.long .L_OP_SPUT_WIDE_JUMBO
.long .L_OP_SPUT_OBJECT_JUMBO
.long .L_OP_SPUT_BOOLEAN_JUMBO
.long .L_OP_SPUT_BYTE_JUMBO
.long .L_OP_SPUT_CHAR_JUMBO
.long .L_OP_SPUT_SHORT_JUMBO
.long .L_OP_INVOKE_VIRTUAL_JUMBO
.long .L_OP_INVOKE_SUPER_JUMBO
.long .L_OP_INVOKE_DIRECT_JUMBO
.long .L_OP_INVOKE_STATIC_JUMBO
.long .L_OP_INVOKE_INTERFACE_JUMBO
.long .L_OP_UNUSED_27FF
.long .L_OP_UNUSED_28FF
.long .L_OP_UNUSED_29FF
.long .L_OP_UNUSED_2AFF
.long .L_OP_UNUSED_2BFF
.long .L_OP_UNUSED_2CFF
.long .L_OP_UNUSED_2DFF
.long .L_OP_UNUSED_2EFF
.long .L_OP_UNUSED_2FFF
.long .L_OP_UNUSED_30FF
.long .L_OP_UNUSED_31FF
.long .L_OP_UNUSED_32FF
.long .L_OP_UNUSED_33FF
.long .L_OP_UNUSED_34FF
.long .L_OP_UNUSED_35FF
.long .L_OP_UNUSED_36FF
.long .L_OP_UNUSED_37FF
.long .L_OP_UNUSED_38FF
.long .L_OP_UNUSED_39FF
.long .L_OP_UNUSED_3AFF
.long .L_OP_UNUSED_3BFF
.long .L_OP_UNUSED_3CFF
.long .L_OP_UNUSED_3DFF
.long .L_OP_UNUSED_3EFF
.long .L_OP_UNUSED_3FFF
.long .L_OP_UNUSED_40FF
.long .L_OP_UNUSED_41FF
.long .L_OP_UNUSED_42FF
.long .L_OP_UNUSED_43FF
.long .L_OP_UNUSED_44FF
.long .L_OP_UNUSED_45FF
.long .L_OP_UNUSED_46FF
.long .L_OP_UNUSED_47FF
.long .L_OP_UNUSED_48FF
.long .L_OP_UNUSED_49FF
.long .L_OP_UNUSED_4AFF
.long .L_OP_UNUSED_4BFF
.long .L_OP_UNUSED_4CFF
.long .L_OP_UNUSED_4DFF
.long .L_OP_UNUSED_4EFF
.long .L_OP_UNUSED_4FFF
.long .L_OP_UNUSED_50FF
.long .L_OP_UNUSED_51FF
.long .L_OP_UNUSED_52FF
.long .L_OP_UNUSED_53FF
.long .L_OP_UNUSED_54FF
.long .L_OP_UNUSED_55FF
.long .L_OP_UNUSED_56FF
.long .L_OP_UNUSED_57FF
.long .L_OP_UNUSED_58FF
.long .L_OP_UNUSED_59FF
.long .L_OP_UNUSED_5AFF
.long .L_OP_UNUSED_5BFF
.long .L_OP_UNUSED_5CFF
.long .L_OP_UNUSED_5DFF
.long .L_OP_UNUSED_5EFF
.long .L_OP_UNUSED_5FFF
.long .L_OP_UNUSED_60FF
.long .L_OP_UNUSED_61FF
.long .L_OP_UNUSED_62FF
.long .L_OP_UNUSED_63FF
.long .L_OP_UNUSED_64FF
.long .L_OP_UNUSED_65FF
.long .L_OP_UNUSED_66FF
.long .L_OP_UNUSED_67FF
.long .L_OP_UNUSED_68FF
.long .L_OP_UNUSED_69FF
.long .L_OP_UNUSED_6AFF
.long .L_OP_UNUSED_6BFF
.long .L_OP_UNUSED_6CFF
.long .L_OP_UNUSED_6DFF
.long .L_OP_UNUSED_6EFF
.long .L_OP_UNUSED_6FFF
.long .L_OP_UNUSED_70FF
.long .L_OP_UNUSED_71FF
.long .L_OP_UNUSED_72FF
.long .L_OP_UNUSED_73FF
.long .L_OP_UNUSED_74FF
.long .L_OP_UNUSED_75FF
.long .L_OP_UNUSED_76FF
.long .L_OP_UNUSED_77FF
.long .L_OP_UNUSED_78FF
.long .L_OP_UNUSED_79FF
.long .L_OP_UNUSED_7AFF
.long .L_OP_UNUSED_7BFF
.long .L_OP_UNUSED_7CFF
.long .L_OP_UNUSED_7DFF
.long .L_OP_UNUSED_7EFF
.long .L_OP_UNUSED_7FFF
.long .L_OP_UNUSED_80FF
.long .L_OP_UNUSED_81FF
.long .L_OP_UNUSED_82FF
.long .L_OP_UNUSED_83FF
.long .L_OP_UNUSED_84FF
.long .L_OP_UNUSED_85FF
.long .L_OP_UNUSED_86FF
.long .L_OP_UNUSED_87FF
.long .L_OP_UNUSED_88FF
.long .L_OP_UNUSED_89FF
.long .L_OP_UNUSED_8AFF
.long .L_OP_UNUSED_8BFF
.long .L_OP_UNUSED_8CFF
.long .L_OP_UNUSED_8DFF
.long .L_OP_UNUSED_8EFF
.long .L_OP_UNUSED_8FFF
.long .L_OP_UNUSED_90FF
.long .L_OP_UNUSED_91FF
.long .L_OP_UNUSED_92FF
.long .L_OP_UNUSED_93FF
.long .L_OP_UNUSED_94FF
.long .L_OP_UNUSED_95FF
.long .L_OP_UNUSED_96FF
.long .L_OP_UNUSED_97FF
.long .L_OP_UNUSED_98FF
.long .L_OP_UNUSED_99FF
.long .L_OP_UNUSED_9AFF
.long .L_OP_UNUSED_9BFF
.long .L_OP_UNUSED_9CFF
.long .L_OP_UNUSED_9DFF
.long .L_OP_UNUSED_9EFF
.long .L_OP_UNUSED_9FFF
.long .L_OP_UNUSED_A0FF
.long .L_OP_UNUSED_A1FF
.long .L_OP_UNUSED_A2FF
.long .L_OP_UNUSED_A3FF
.long .L_OP_UNUSED_A4FF
.long .L_OP_UNUSED_A5FF
.long .L_OP_UNUSED_A6FF
.long .L_OP_UNUSED_A7FF
.long .L_OP_UNUSED_A8FF
.long .L_OP_UNUSED_A9FF
.long .L_OP_UNUSED_AAFF
.long .L_OP_UNUSED_ABFF
.long .L_OP_UNUSED_ACFF
.long .L_OP_UNUSED_ADFF
.long .L_OP_UNUSED_AEFF
.long .L_OP_UNUSED_AFFF
.long .L_OP_UNUSED_B0FF
.long .L_OP_UNUSED_B1FF
.long .L_OP_UNUSED_B2FF
.long .L_OP_UNUSED_B3FF
.long .L_OP_UNUSED_B4FF
.long .L_OP_UNUSED_B5FF
.long .L_OP_UNUSED_B6FF
.long .L_OP_UNUSED_B7FF
.long .L_OP_UNUSED_B8FF
.long .L_OP_UNUSED_B9FF
.long .L_OP_UNUSED_BAFF
.long .L_OP_UNUSED_BBFF
.long .L_OP_UNUSED_BCFF
.long .L_OP_UNUSED_BDFF
.long .L_OP_UNUSED_BEFF
.long .L_OP_UNUSED_BFFF
.long .L_OP_UNUSED_C0FF
.long .L_OP_UNUSED_C1FF
.long .L_OP_UNUSED_C2FF
.long .L_OP_UNUSED_C3FF
.long .L_OP_UNUSED_C4FF
.long .L_OP_UNUSED_C5FF
.long .L_OP_UNUSED_C6FF
.long .L_OP_UNUSED_C7FF
.long .L_OP_UNUSED_C8FF
.long .L_OP_UNUSED_C9FF
.long .L_OP_UNUSED_CAFF
.long .L_OP_UNUSED_CBFF
.long .L_OP_UNUSED_CCFF
.long .L_OP_UNUSED_CDFF
.long .L_OP_UNUSED_CEFF
.long .L_OP_UNUSED_CFFF
.long .L_OP_UNUSED_D0FF
.long .L_OP_UNUSED_D1FF
.long .L_OP_UNUSED_D2FF
.long .L_OP_UNUSED_D3FF
.long .L_OP_UNUSED_D4FF
.long .L_OP_UNUSED_D5FF
.long .L_OP_UNUSED_D6FF
.long .L_OP_UNUSED_D7FF
.long .L_OP_UNUSED_D8FF
.long .L_OP_UNUSED_D9FF
.long .L_OP_UNUSED_DAFF
.long .L_OP_UNUSED_DBFF
.long .L_OP_UNUSED_DCFF
.long .L_OP_UNUSED_DDFF
.long .L_OP_UNUSED_DEFF
.long .L_OP_UNUSED_DFFF
.long .L_OP_UNUSED_E0FF
.long .L_OP_UNUSED_E1FF
.long .L_OP_UNUSED_E2FF
.long .L_OP_UNUSED_E3FF
.long .L_OP_UNUSED_E4FF
.long .L_OP_UNUSED_E5FF
.long .L_OP_UNUSED_E6FF
.long .L_OP_UNUSED_E7FF
.long .L_OP_UNUSED_E8FF
.long .L_OP_UNUSED_E9FF
.long .L_OP_UNUSED_EAFF
.long .L_OP_UNUSED_EBFF
.long .L_OP_UNUSED_ECFF
.long .L_OP_UNUSED_EDFF
.long .L_OP_UNUSED_EEFF
.long .L_OP_UNUSED_EFFF
.long .L_OP_UNUSED_F0FF
.long .L_OP_UNUSED_F1FF
.long .L_OP_UNUSED_F2FF
.long .L_OP_UNUSED_F3FF
.long .L_OP_UNUSED_F4FF
.long .L_OP_UNUSED_F5FF
.long .L_OP_UNUSED_F6FF
.long .L_OP_UNUSED_F7FF
.long .L_OP_UNUSED_F8FF
.long .L_OP_UNUSED_F9FF
.long .L_OP_UNUSED_FAFF
.long .L_OP_UNUSED_FBFF
.long .L_OP_UNUSED_FCFF
.long .L_OP_UNUSED_FDFF
.long .L_OP_UNUSED_FEFF
.long .L_OP_THROW_VERIFICATION_ERROR_JUMBO