system_events.cc (6658:f4de76601762) system_events.cc (7693:f1db1000d957)
1/*
2 * Copyright (c) 2004-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;

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

25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Lisa Hsu
29 * Nathan Binkert
30 */
31
32#include "arch/isa_traits.hh"
1/*
2 * Copyright (c) 2004-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;

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

25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * Authors: Lisa Hsu
29 * Nathan Binkert
30 */
31
32#include "arch/isa_traits.hh"
33#include "arch/utility.hh"
33#include "base/trace.hh"
34#include "config/the_isa.hh"
35#include "cpu/thread_context.hh"
36#include "kern/system_events.hh"
37
38using namespace TheISA;
39
40void
41SkipFuncEvent::process(ThreadContext *tc)
42{
34#include "base/trace.hh"
35#include "config/the_isa.hh"
36#include "cpu/thread_context.hh"
37#include "kern/system_events.hh"
38
39using namespace TheISA;
40
41void
42SkipFuncEvent::process(ThreadContext *tc)
43{
43 Addr newpc = tc->readIntReg(ReturnAddressReg);
44
45 DPRINTF(PCEvent, "skipping %s: pc=%x, newpc=%x\n", description,
44 DPRINTF(PCEvent, "skipping %s: pc=%x, newpc=%x\n", description,
46 tc->readPC(), newpc);
45 tc->readPC(), tc->readIntReg(ReturnAddressReg));
47
46
48 tc->setPC(newpc);
49 tc->setNextPC(tc->readPC() + sizeof(TheISA::MachInst));
50#if ISA_HAS_DELAY_SLOT
51 tc->setNextPC(tc->readNextPC() + sizeof(TheISA::MachInst));
52#endif
47 // Call ISA specific code to do the skipping
48 TheISA::skipFunction(tc);
53}
49}