stacktrace.cc (5569:baeee670d4ce) stacktrace.cc (7720:65d338a8dba4)
1/*
2 * Copyright (c) 2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 131 unchanged lines hidden (view full) ---

140{
141 tc = _tc;
142
143 System *sys = tc->getSystemPtr();
144
145 bool usermode =
146 (tc->readMiscRegNoEffect(IPR_DTB_CM) & 0x18) != 0;
147
1/*
2 * Copyright (c) 2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 131 unchanged lines hidden (view full) ---

140{
141 tc = _tc;
142
143 System *sys = tc->getSystemPtr();
144
145 bool usermode =
146 (tc->readMiscRegNoEffect(IPR_DTB_CM) & 0x18) != 0;
147
148 Addr pc = tc->readNextPC();
148 Addr pc = tc->pcState().pc();
149 bool kernel = sys->kernelStart <= pc && pc <= sys->kernelEnd;
150
151 if (usermode) {
152 stack.push_back(user);
153 return;
154 }
155
156 if (!kernel) {

--- 6 unchanged lines hidden (view full) ---

163 Addr bottom = ksp & ~0x3fff;
164
165 if (is_call) {
166 Addr addr;
167 if (!symtab->findNearestAddr(pc, addr))
168 panic("could not find address %#x", pc);
169
170 stack.push_back(addr);
149 bool kernel = sys->kernelStart <= pc && pc <= sys->kernelEnd;
150
151 if (usermode) {
152 stack.push_back(user);
153 return;
154 }
155
156 if (!kernel) {

--- 6 unchanged lines hidden (view full) ---

163 Addr bottom = ksp & ~0x3fff;
164
165 if (is_call) {
166 Addr addr;
167 if (!symtab->findNearestAddr(pc, addr))
168 panic("could not find address %#x", pc);
169
170 stack.push_back(addr);
171 pc = tc->readPC();
171 pc = tc->pcState().pc();
172 }
173
174 while (ksp > bottom) {
175 Addr addr;
176 if (!symtab->findNearestAddr(pc, addr))
177 panic("could not find symbol for pc=%#x", pc);
178 assert(pc >= addr && "symbol botch: callpc < func");
179

--- 187 unchanged lines hidden ---
172 }
173
174 while (ksp > bottom) {
175 Addr addr;
176 if (!symtab->findNearestAddr(pc, addr))
177 panic("could not find symbol for pc=%#x", pc);
178 assert(pc >= addr && "symbol botch: callpc < func");
179

--- 187 unchanged lines hidden ---