# 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.

#
# Configuration for ARMv4T architecture targets.  This is largely pulled
# from the ARMv5TE sources, but we can't use certain instructions introduced
# in ARMv5 (BLX, CLZ, LDC2, MCR2, MRC2, STC2) or ARMv5TE (PLD, LDRD, MCRR,
# MRRC, QADD, QDADD, QDSUB, QSUB, SMLA, SMLAL, SMLAW, SMUL, SMULW, STRD).
#

handler-size 64

# source for the instruction table stub
asm-stub armv5te/stub.S

# 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/platform.S

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

# arch-specific entry point to interpreter
import armv5te/entry.S

# opcode list; argument to op-start is default directory
op-start armv5te
    op OP_AGET_WIDE armv4t
    op OP_APUT_WIDE armv4t
    op OP_IGET_WIDE armv4t
    op OP_IGET_WIDE_QUICK armv4t
    op OP_IPUT_WIDE armv4t
    op OP_IPUT_WIDE_QUICK armv4t
    op OP_SGET_WIDE armv4t
    op OP_SPUT_WIDE armv4t
    op OP_IGET_WIDE_VOLATILE armv4t
    op OP_IPUT_WIDE_VOLATILE armv4t
    op OP_SGET_WIDE_VOLATILE armv4t
    op OP_SPUT_WIDE_VOLATILE armv4t
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
import armv5te/debug.c
