Deleted Added
sdiff udiff text old ( 8780:89e0822462a1 ) new ( 8806:669e93d79ed9 )
full compact
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;

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

182 AlphaFault::invoke(tc);
183}
184
185void
186ItbPageFault::invoke(ThreadContext *tc, StaticInstPtr inst)
187{
188 if (FullSystem) {
189 ItbFault::invoke(tc);
190 } else {
191 Process *p = tc->getProcessPtr();
192 TlbEntry entry;
193 bool success = p->pTable->lookup(pc, entry);
194 if (!success) {
195 panic("Tried to execute unmapped address %#x.\n", pc);
196 } else {
197 VAddr vaddr(pc);
198 tc->getITBPtr()->insert(vaddr.page(), entry);
199 }
200 }
201}
202
203void
204NDtbMissFault::invoke(ThreadContext *tc, StaticInstPtr inst)
205{
206 if (FullSystem) {
207 DtbFault::invoke(tc, inst);
208 } else {
209 Process *p = tc->getProcessPtr();
210 TlbEntry entry;
211 bool success = p->pTable->lookup(vaddr, entry);
212 if (!success) {
213 if (p->fixupStackFault(vaddr))
214 success = p->pTable->lookup(vaddr, entry);
215 }
216 if (!success) {
217 panic("Tried to access unmapped address %#x.\n", (Addr)vaddr);
218 } else {
219 tc->getDTBPtr()->insert(vaddr.page(), entry);
220 }
221 }
222}
223
224} // namespace AlphaISA
225