faults.cc (12406:86bde4a026b5) | faults.cc (12455:c88f0b37f433) |
---|---|
1/* 2 * Copyright (c) 2003-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; --- 182 unchanged lines hidden (view full) --- 191ItbPageFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) 192{ 193 if (FullSystem) { 194 ItbFault::invoke(tc); 195 return; 196 } 197 198 Process *p = tc->getProcessPtr(); | 1/* 2 * Copyright (c) 2003-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; --- 182 unchanged lines hidden (view full) --- 191ItbPageFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) 192{ 193 if (FullSystem) { 194 ItbFault::invoke(tc); 195 return; 196 } 197 198 Process *p = tc->getProcessPtr(); |
199 TlbEntry entry; 200 bool success = p->pTable->lookup(pc, entry); 201 if (!success) { 202 panic("Tried to execute unmapped address %#x.\n", pc); 203 } else { 204 VAddr vaddr(pc); 205 dynamic_cast<TLB *>(tc->getITBPtr())->insert(vaddr.page(), entry); 206 } | 199 TlbEntry *entry = p->pTable->lookup(pc); 200 panic_if(!entry, "Tried to execute unmapped address %#x.\n", pc); 201 202 VAddr vaddr(pc); 203 dynamic_cast<TLB *>(tc->getITBPtr())->insert(vaddr.page(), *entry); |
207} 208 209void 210NDtbMissFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) 211{ 212 if (FullSystem) { 213 DtbFault::invoke(tc, inst); 214 return; 215 } 216 217 Process *p = tc->getProcessPtr(); | 204} 205 206void 207NDtbMissFault::invoke(ThreadContext *tc, const StaticInstPtr &inst) 208{ 209 if (FullSystem) { 210 DtbFault::invoke(tc, inst); 211 return; 212 } 213 214 Process *p = tc->getProcessPtr(); |
218 TlbEntry entry; 219 bool success = p->pTable->lookup(vaddr, entry); 220 if (!success) { 221 if (p->fixupStackFault(vaddr)) 222 success = p->pTable->lookup(vaddr, entry); 223 } 224 if (!success) { 225 panic("Tried to access unmapped address %#x.\n", (Addr)vaddr); 226 } else { 227 dynamic_cast<TLB *>(tc->getDTBPtr())->insert(vaddr.page(), entry); 228 } | 215 TlbEntry *entry = p->pTable->lookup(vaddr); 216 if (!entry && p->fixupStackFault(vaddr)) 217 entry = p->pTable->lookup(vaddr); 218 panic_if(!entry, "Tried to access unmapped address %#x.\n", (Addr)vaddr); 219 dynamic_cast<TLB *>(tc->getDTBPtr())->insert(vaddr.page(), *entry); |
229} 230 231} // namespace AlphaISA 232 | 220} 221 222} // namespace AlphaISA 223 |