18792Sgblack@eecs.umich.edu/*
28792Sgblack@eecs.umich.edu * Copyright (c) 2005 The Regents of The University of Michigan
38792Sgblack@eecs.umich.edu * All rights reserved.
48792Sgblack@eecs.umich.edu *
58792Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
68792Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
78792Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
88792Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
98792Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
108792Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
118792Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
128792Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
138792Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
148792Sgblack@eecs.umich.edu * this software without specific prior written permission.
158792Sgblack@eecs.umich.edu *
168792Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
178792Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
188792Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
198792Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
208792Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
218792Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
228792Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
238792Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
248792Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
258792Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
268792Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
278792Sgblack@eecs.umich.edu *
288792Sgblack@eecs.umich.edu * Authors: Nathan Binkert
298792Sgblack@eecs.umich.edu */
308792Sgblack@eecs.umich.edu
3111793Sbrandon.potter@amd.com#include "arch/power/stacktrace.hh"
3211793Sbrandon.potter@amd.com
338792Sgblack@eecs.umich.edu#include <string>
348792Sgblack@eecs.umich.edu
358792Sgblack@eecs.umich.edu#include "base/trace.hh"
368792Sgblack@eecs.umich.edu
378792Sgblack@eecs.umich.eduusing namespace std;
388792Sgblack@eecs.umich.edu
398792Sgblack@eecs.umich.edunamespace PowerISA {
408792Sgblack@eecs.umich.edu
418792Sgblack@eecs.umich.eduProcessInfo::ProcessInfo(ThreadContext *_tc)
428792Sgblack@eecs.umich.edu{
438792Sgblack@eecs.umich.edu    panic("ProcessInfo constructor not implemented.\n");
448792Sgblack@eecs.umich.edu}
458792Sgblack@eecs.umich.edu
468792Sgblack@eecs.umich.eduAddr
478792Sgblack@eecs.umich.eduProcessInfo::task(Addr ksp) const
488792Sgblack@eecs.umich.edu{
498792Sgblack@eecs.umich.edu    panic("ProcessInfo::task not implemented.\n");
508792Sgblack@eecs.umich.edu    return 0;
518792Sgblack@eecs.umich.edu}
528792Sgblack@eecs.umich.edu
538792Sgblack@eecs.umich.eduint
548792Sgblack@eecs.umich.eduProcessInfo::pid(Addr ksp) const
558792Sgblack@eecs.umich.edu{
568792Sgblack@eecs.umich.edu    panic("ProcessInfo::pid not implemented.\n");
578792Sgblack@eecs.umich.edu    return 0;
588792Sgblack@eecs.umich.edu}
598792Sgblack@eecs.umich.edu
608792Sgblack@eecs.umich.edustring
618792Sgblack@eecs.umich.eduProcessInfo::name(Addr ksp) const
628792Sgblack@eecs.umich.edu{
638792Sgblack@eecs.umich.edu    panic("ProcessInfo::name not implemented.\n");
648792Sgblack@eecs.umich.edu    return "";
658792Sgblack@eecs.umich.edu}
668792Sgblack@eecs.umich.edu
678792Sgblack@eecs.umich.eduStackTrace::StackTrace()
688792Sgblack@eecs.umich.edu    : tc(0), stack(64)
698792Sgblack@eecs.umich.edu{
708792Sgblack@eecs.umich.edu    panic("StackTrace constructor not implemented.\n");
718792Sgblack@eecs.umich.edu}
728792Sgblack@eecs.umich.edu
7310417Sandreas.hansson@arm.comStackTrace::StackTrace(ThreadContext *_tc, const StaticInstPtr &inst)
748792Sgblack@eecs.umich.edu    : tc(0), stack(64)
758792Sgblack@eecs.umich.edu{
768792Sgblack@eecs.umich.edu    panic("StackTrace constructor not implemented.\n");
778792Sgblack@eecs.umich.edu}
788792Sgblack@eecs.umich.edu
798792Sgblack@eecs.umich.eduStackTrace::~StackTrace()
808792Sgblack@eecs.umich.edu{
818792Sgblack@eecs.umich.edu    panic("StackTrace destructor not implemented.\n");
828792Sgblack@eecs.umich.edu}
838792Sgblack@eecs.umich.edu
848792Sgblack@eecs.umich.eduvoid
858792Sgblack@eecs.umich.eduStackTrace::trace(ThreadContext *_tc, bool is_call)
868792Sgblack@eecs.umich.edu{
878792Sgblack@eecs.umich.edu    panic("StackTrace::trace not implemented.\n");
888792Sgblack@eecs.umich.edu}
898792Sgblack@eecs.umich.edu
908792Sgblack@eecs.umich.edubool
918792Sgblack@eecs.umich.eduStackTrace::isEntry(Addr addr)
928792Sgblack@eecs.umich.edu{
938792Sgblack@eecs.umich.edu    panic("StackTrace::isEntry not implemented.\n");
948792Sgblack@eecs.umich.edu    return false;
958792Sgblack@eecs.umich.edu}
968792Sgblack@eecs.umich.edu
978792Sgblack@eecs.umich.edubool
988792Sgblack@eecs.umich.eduStackTrace::decodeStack(MachInst inst, int &disp)
998792Sgblack@eecs.umich.edu{
1008792Sgblack@eecs.umich.edu    panic("StackTrace::decodeStack not implemented.\n");
1018792Sgblack@eecs.umich.edu    return false;
1028792Sgblack@eecs.umich.edu}
1038792Sgblack@eecs.umich.edu
1048792Sgblack@eecs.umich.edubool
1058792Sgblack@eecs.umich.eduStackTrace::decodeSave(MachInst inst, int &reg, int &disp)
1068792Sgblack@eecs.umich.edu{
1078792Sgblack@eecs.umich.edu    panic("StackTrace::decodeSave not implemented.\n");
1088792Sgblack@eecs.umich.edu    return true;
1098792Sgblack@eecs.umich.edu}
1108792Sgblack@eecs.umich.edu
1118792Sgblack@eecs.umich.edu/*
1128792Sgblack@eecs.umich.edu * Decode the function prologue for the function we're in, and note
1138792Sgblack@eecs.umich.edu * which registers are stored where, and how large the stack frame is.
1148792Sgblack@eecs.umich.edu */
1158792Sgblack@eecs.umich.edubool
1168792Sgblack@eecs.umich.eduStackTrace::decodePrologue(Addr sp, Addr callpc, Addr func, int &size,
1178792Sgblack@eecs.umich.edu                           Addr &ra)
1188792Sgblack@eecs.umich.edu{
1198792Sgblack@eecs.umich.edu    panic("StackTrace::decodePrologue not implemented.\n");
1208792Sgblack@eecs.umich.edu    return true;
1218792Sgblack@eecs.umich.edu}
1228792Sgblack@eecs.umich.edu
1238792Sgblack@eecs.umich.edu#if TRACING_ON
1248792Sgblack@eecs.umich.eduvoid
1258792Sgblack@eecs.umich.eduStackTrace::dump()
1268792Sgblack@eecs.umich.edu{
1278792Sgblack@eecs.umich.edu    panic("StackTrace::dump not implemented.\n");
1288792Sgblack@eecs.umich.edu}
1298792Sgblack@eecs.umich.edu#endif
1308792Sgblack@eecs.umich.edu
1318792Sgblack@eecs.umich.edu} // namespace PowerISA
132