utility.cc revision 5499:8bfc7650c344
15643Sgblack@eecs.umich.edu/*
25643Sgblack@eecs.umich.edu * Copyright (c) 2003-2005 The Regents of The University of Michigan
35643Sgblack@eecs.umich.edu * All rights reserved.
45643Sgblack@eecs.umich.edu *
55643Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
65643Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
75643Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
85643Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
95643Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
105643Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
115643Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
125643Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
135643Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
145643Sgblack@eecs.umich.edu * this software without specific prior written permission.
155643Sgblack@eecs.umich.edu *
165643Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
175643Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
185643Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
195643Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
205643Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
215643Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
225643Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
235643Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
245643Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
255643Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
265643Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
275643Sgblack@eecs.umich.edu *
285643Sgblack@eecs.umich.edu * Authors: Nathan Binkert
295643Sgblack@eecs.umich.edu *          Ali Saidi
305643Sgblack@eecs.umich.edu */
3111793Sbrandon.potter@amd.com
3211793Sbrandon.potter@amd.com#include "arch/alpha/utility.hh"
336138Sgblack@eecs.umich.edu
345651Sgblack@eecs.umich.edu#if FULL_SYSTEM
358746Sgblack@eecs.umich.edu#include "arch/alpha/vtophys.hh"
368232Snate@binkert.org#include "mem/vport.hh"
375657Sgblack@eecs.umich.edu#endif
385643Sgblack@eecs.umich.edu
395643Sgblack@eecs.umich.edunamespace AlphaISA
405643Sgblack@eecs.umich.edu{
415643Sgblack@eecs.umich.edu
429805Sstever@gmail.comuint64_t getArgument(ThreadContext *tc, int number, bool fp)
439808Sstever@gmail.com{
449805Sstever@gmail.com#if FULL_SYSTEM
455643Sgblack@eecs.umich.edu    if (number < NumArgumentRegs) {
467913SBrad.Beckmann@amd.com        if (fp)
477913SBrad.Beckmann@amd.com            return tc->readFloatRegBits(ArgumentReg[number]);
487913SBrad.Beckmann@amd.com        else
497913SBrad.Beckmann@amd.com            return tc->readIntReg(ArgumentReg[number]);
507913SBrad.Beckmann@amd.com    } else {
516136Sgblack@eecs.umich.edu        Addr sp = tc->readIntReg(StackPointerReg);
525643Sgblack@eecs.umich.edu        VirtualPort *vp = tc->getVirtPort();
535643Sgblack@eecs.umich.edu        uint64_t arg = vp->read<uint64_t>(sp +
545653Sgblack@eecs.umich.edu                           (number-NumArgumentRegs) * sizeof(uint64_t));
555653Sgblack@eecs.umich.edu        return arg;
565653Sgblack@eecs.umich.edu    }
575653Sgblack@eecs.umich.edu#else
585827Sgblack@eecs.umich.edu    panic("getArgument() is Full system only\n");
595653Sgblack@eecs.umich.edu    M5_DUMMY_RETURN
605643Sgblack@eecs.umich.edu#endif
615643Sgblack@eecs.umich.edu}
627913SBrad.Beckmann@amd.com
637913SBrad.Beckmann@amd.com} // namespace AlphaISA
647913SBrad.Beckmann@amd.com
657913SBrad.Beckmann@amd.com