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 --- |