# 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 "allstubs" target.  This is structured like the
# assembly interpreters, but consists entirely of C stubs, making it
# a handy if inefficient way to exercise all of the C handlers.
#

handler-size 64

# C file header and basic definitions
import c/header.c

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

# common defs for the C opcodes
import c/opcommon.c

# opcode list; argument to op-start is default directory
op-start c
    # use nothing but C stubs
op-end

# arch-specific entry point to interpreter
import cstubs/entry.c

# "helper" code
import c/gotoTargets.c

# finish
import cstubs/enddefs.c
