types.hh revision 6214:1ec0ec8933ae
15217Ssaidi@eecs.umich.edu/*
29428SAndreas.Sandberg@ARM.com * Copyright (c) 2007-2008 The Florida State University
39428SAndreas.Sandberg@ARM.com * All rights reserved.
49428SAndreas.Sandberg@ARM.com *
59428SAndreas.Sandberg@ARM.com * Redistribution and use in source and binary forms, with or without
69428SAndreas.Sandberg@ARM.com * modification, are permitted provided that the following conditions are
79428SAndreas.Sandberg@ARM.com * met: redistributions of source code must retain the above copyright
89428SAndreas.Sandberg@ARM.com * notice, this list of conditions and the following disclaimer;
99428SAndreas.Sandberg@ARM.com * redistributions in binary form must reproduce the above copyright
109428SAndreas.Sandberg@ARM.com * notice, this list of conditions and the following disclaimer in the
119428SAndreas.Sandberg@ARM.com * documentation and/or other materials provided with the distribution;
129428SAndreas.Sandberg@ARM.com * neither the name of the copyright holders nor the names of its
139428SAndreas.Sandberg@ARM.com * contributors may be used to endorse or promote products derived from
145217Ssaidi@eecs.umich.edu * this software without specific prior written permission.
155217Ssaidi@eecs.umich.edu *
165217Ssaidi@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
175217Ssaidi@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
185217Ssaidi@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
195217Ssaidi@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
205217Ssaidi@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
215217Ssaidi@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
225217Ssaidi@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
235217Ssaidi@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
245217Ssaidi@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
255217Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
265217Ssaidi@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
275217Ssaidi@eecs.umich.edu *
285217Ssaidi@eecs.umich.edu * Authors: Stephen Hines
295217Ssaidi@eecs.umich.edu */
305217Ssaidi@eecs.umich.edu
315217Ssaidi@eecs.umich.edu#ifndef __ARCH_ARM_TYPES_HH__
325217Ssaidi@eecs.umich.edu#define __ARCH_ARM_TYPES_HH__
335217Ssaidi@eecs.umich.edu
345217Ssaidi@eecs.umich.edu#include "base/types.hh"
355217Ssaidi@eecs.umich.edu
365217Ssaidi@eecs.umich.edunamespace ArmISA
375217Ssaidi@eecs.umich.edu{
385217Ssaidi@eecs.umich.edu    typedef uint32_t MachInst;
395217Ssaidi@eecs.umich.edu    typedef uint64_t ExtMachInst;
405217Ssaidi@eecs.umich.edu    typedef uint8_t  RegIndex;
415217Ssaidi@eecs.umich.edu
425217Ssaidi@eecs.umich.edu    typedef uint64_t IntReg;
435217Ssaidi@eecs.umich.edu    typedef uint64_t LargestRead;
445217Ssaidi@eecs.umich.edu    // Need to use 64 bits to make sure that read requests get handled properly
456658Snate@binkert.org
465217Ssaidi@eecs.umich.edu    // floating point register file entry type
478232Snate@binkert.org    typedef uint32_t FloatReg32;
485217Ssaidi@eecs.umich.edu    typedef uint64_t FloatReg64;
495217Ssaidi@eecs.umich.edu    typedef uint64_t FloatRegBits;
505217Ssaidi@eecs.umich.edu
515217Ssaidi@eecs.umich.edu    typedef double FloatRegVal;
525217Ssaidi@eecs.umich.edu    typedef double FloatReg;
535217Ssaidi@eecs.umich.edu
545217Ssaidi@eecs.umich.edu    // cop-0/cop-1 system control register
555217Ssaidi@eecs.umich.edu    typedef uint64_t MiscReg;
565217Ssaidi@eecs.umich.edu
575217Ssaidi@eecs.umich.edu    typedef union {
585217Ssaidi@eecs.umich.edu        IntReg   intreg;
595217Ssaidi@eecs.umich.edu        FloatReg fpreg;
605217Ssaidi@eecs.umich.edu        MiscReg  ctrlreg;
615217Ssaidi@eecs.umich.edu    } AnyReg;
625217Ssaidi@eecs.umich.edu
635217Ssaidi@eecs.umich.edu    typedef int RegContextParam;
645217Ssaidi@eecs.umich.edu    typedef int RegContextVal;
655217Ssaidi@eecs.umich.edu
665217Ssaidi@eecs.umich.edu    //used in FP convert & round function
675217Ssaidi@eecs.umich.edu    enum ConvertType{
685217Ssaidi@eecs.umich.edu        SINGLE_TO_DOUBLE,
695217Ssaidi@eecs.umich.edu        SINGLE_TO_WORD,
705217Ssaidi@eecs.umich.edu        SINGLE_TO_LONG,
715217Ssaidi@eecs.umich.edu
725217Ssaidi@eecs.umich.edu        DOUBLE_TO_SINGLE,
735217Ssaidi@eecs.umich.edu        DOUBLE_TO_WORD,
745217Ssaidi@eecs.umich.edu        DOUBLE_TO_LONG,
755217Ssaidi@eecs.umich.edu
765217Ssaidi@eecs.umich.edu        LONG_TO_SINGLE,
775217Ssaidi@eecs.umich.edu        LONG_TO_DOUBLE,
785217Ssaidi@eecs.umich.edu        LONG_TO_WORD,
797720Sgblack@eecs.umich.edu        LONG_TO_PS,
807720Sgblack@eecs.umich.edu
815712Shsul@eecs.umich.edu        WORD_TO_SINGLE,
825712Shsul@eecs.umich.edu        WORD_TO_DOUBLE,
835217Ssaidi@eecs.umich.edu        WORD_TO_LONG,
845217Ssaidi@eecs.umich.edu        WORD_TO_PS,
855714Shsul@eecs.umich.edu
865714Shsul@eecs.umich.edu        PL_TO_SINGLE,
875714Shsul@eecs.umich.edu        PU_TO_SINGLE
885714Shsul@eecs.umich.edu    };
895714Shsul@eecs.umich.edu
905714Shsul@eecs.umich.edu    //used in FP convert & round function
915714Shsul@eecs.umich.edu    enum RoundMode{
925217Ssaidi@eecs.umich.edu        RND_ZERO,
939428SAndreas.Sandberg@ARM.com        RND_DOWN,
949428SAndreas.Sandberg@ARM.com        RND_UP,
959428SAndreas.Sandberg@ARM.com        RND_NEAREST
969428SAndreas.Sandberg@ARM.com    };
979428SAndreas.Sandberg@ARM.com
989428SAndreas.Sandberg@ARM.com    enum OperatingMode {
999428SAndreas.Sandberg@ARM.com        MODE_USER = 16,
1009428SAndreas.Sandberg@ARM.com        MODE_FIQ = 17,
1019428SAndreas.Sandberg@ARM.com        MODE_IRQ = 18,
1029428SAndreas.Sandberg@ARM.com        MODE_SVC = 19,
1039428SAndreas.Sandberg@ARM.com        MODE_ABORT = 23,
1049428SAndreas.Sandberg@ARM.com        MODE_UNDEFINED = 27,
1059428SAndreas.Sandberg@ARM.com        MODE_SYSTEM = 31
1069428SAndreas.Sandberg@ARM.com    };
1079428SAndreas.Sandberg@ARM.com
1089428SAndreas.Sandberg@ARM.com    struct CoreSpecific {
1099428SAndreas.Sandberg@ARM.com        // Empty for now on the ARM
1109428SAndreas.Sandberg@ARM.com    };
1119428SAndreas.Sandberg@ARM.com
1129428SAndreas.Sandberg@ARM.com} // namespace ArmISA
1139428SAndreas.Sandberg@ARM.com
1149428SAndreas.Sandberg@ARM.com#endif
1159428SAndreas.Sandberg@ARM.com