faults.cc revision 8314
14202Sbinkertn@umich.edu/* 24202Sbinkertn@umich.edu * Copyright (c) 2003-2005 The Regents of The University of Michigan 34202Sbinkertn@umich.edu * All rights reserved. 44202Sbinkertn@umich.edu * 54202Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without 64202Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are 74202Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright 84202Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer; 94202Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright 104202Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the 114202Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution; 124202Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its 134202Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from 144202Sbinkertn@umich.edu * this software without specific prior written permission. 154202Sbinkertn@umich.edu * 164202Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174202Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184202Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194202Sbinkertn@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204202Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 214202Sbinkertn@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224202Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234202Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244202Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254202Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264202Sbinkertn@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274202Sbinkertn@umich.edu * 284202Sbinkertn@umich.edu * Authors: Nathan Binkert 294202Sbinkertn@umich.edu * Gabe Black 304202Sbinkertn@umich.edu */ 314202Sbinkertn@umich.edu 324202Sbinkertn@umich.edu#include "arch/isa_traits.hh" 335628Sgblack@eecs.umich.edu#include "base/misc.hh" 344486Sbinkertn@umich.edu#include "cpu/base.hh" 354776Sgblack@eecs.umich.edu#include "cpu/thread_context.hh" 364486Sbinkertn@umich.edu#include "debug/Fault.hh" 378774Sgblack@eecs.umich.edu#include "mem/page_table.hh" 384202Sbinkertn@umich.edu#include "sim/faults.hh" 394202Sbinkertn@umich.edu#include "sim/process.hh" 404202Sbinkertn@umich.edu 414202Sbinkertn@umich.edu#if !FULL_SYSTEM 425522Snate@binkert.orgvoid FaultBase::invoke(ThreadContext * tc, StaticInstPtr inst) 438233Snate@binkert.org{ 444202Sbinkertn@umich.edu panic("fault (%s) detected @ PC %s", name(), tc->pcState()); 454202Sbinkertn@umich.edu} 464202Sbinkertn@umich.edu#else 474202Sbinkertn@umich.eduvoid FaultBase::invoke(ThreadContext * tc, StaticInstPtr inst) 484202Sbinkertn@umich.edu{ 494202Sbinkertn@umich.edu DPRINTF(Fault, "Fault %s at PC: %s\n", name(), tc->pcState()); 508770Sgblack@eecs.umich.edu assert(!tc->misspeculating()); 517768SAli.Saidi@ARM.com} 527768SAli.Saidi@ARM.com#endif 538766Sgblack@eecs.umich.edu 547768SAli.Saidi@ARM.comvoid UnimpFault::invoke(ThreadContext * tc, StaticInstPtr inst) 557768SAli.Saidi@ARM.com{ 568766Sgblack@eecs.umich.edu panic("Unimpfault: %s\n", panicStr.c_str()); 577768SAli.Saidi@ARM.com} 587768SAli.Saidi@ARM.com 594202Sbinkertn@umich.edu#if !FULL_SYSTEM 608774Sgblack@eecs.umich.eduvoid GenericPageTableFault::invoke(ThreadContext *tc, StaticInstPtr inst) 615016Sgblack@eecs.umich.edu{ 624486Sbinkertn@umich.edu Process *p = tc->getProcessPtr(); 638335Snate@binkert.org 648335Snate@binkert.org if (!p->checkAndAllocNextPage(vaddr)) 658335Snate@binkert.org panic("Page table fault when accessing virtual address %#x\n", vaddr); 668335Snate@binkert.org 678335Snate@binkert.org} 688335Snate@binkert.org 698335Snate@binkert.orgvoid GenericAlignmentFault::invoke(ThreadContext *tc, StaticInstPtr inst) 708335Snate@binkert.org{ 718335Snate@binkert.org panic("Alignment fault when accessing virtual address %#x\n", vaddr); 728335Snate@binkert.org} 738335Snate@binkert.org#endif 748335Snate@binkert.org