
# Copyright (C) 2009 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.

#
# Configuration for ARMv5TE architecture targets.
#

# file header and basic definitions
#import c/header.c
import armv5te/header.S

# C pre-processor defines for stub C instructions
#import cstubs/stubdefs.c

# highly-platform-specific defs
import armv5te-vfp/platform.S

# common defs for the C helpers; include this before the instruction handlers
#import c/opcommon.c

# opcode list; argument to op-start is default directory
op-start armv5te-vfp
    op TEMPLATE_CMP_LONG armv5te
    op TEMPLATE_INVOKE_METHOD_CHAIN armv5te
    op TEMPLATE_INVOKE_METHOD_NATIVE armv5te
    op TEMPLATE_INVOKE_METHOD_NO_OPT armv5te
    op TEMPLATE_INVOKE_METHOD_PREDICTED_CHAIN armv5te
    op TEMPLATE_MUL_LONG armv5te
    op TEMPLATE_RETURN armv5te
    op TEMPLATE_SHL_LONG armv5te
    op TEMPLATE_SHR_LONG armv5te
    op TEMPLATE_USHR_LONG armv5te
    op TEMPLATE_THROW_EXCEPTION_COMMON armv5te
    op TEMPLATE_STRING_COMPARETO armv5te
    op TEMPLATE_STRING_INDEXOF armv5te
    op TEMPLATE_INTERPRET armv5te
    op TEMPLATE_MONITOR_ENTER armv5te
    op TEMPLATE_MONITOR_ENTER_DEBUG armv5te
    op TEMPLATE_PERIODIC_PROFILING armv5te
    op TEMPLATE_INVOKE_METHOD_CHAIN_PROF armv5te
    op TEMPLATE_INVOKE_METHOD_PREDICTED_CHAIN_PROF armv5te
    op TEMPLATE_INVOKE_METHOD_NATIVE_PROF armv5te
    op TEMPLATE_INVOKE_METHOD_NO_OPT_PROF armv5te
    op TEMPLATE_RETURN_PROF armv5te

op-end

# "helper" code for C; include if you use any of the C stubs (this generates
# object code, so it's normally excluded)
##import c/gotoTargets.c

# end of defs; include this when cstubs/stubdefs.c is included
#import cstubs/enddefs.c

# common subroutines for asm
import armv5te/footer.S
