Deleted Added
sdiff udiff text old ( 2680:246e7104f744 ) new ( 4103:785279436bdd )
full compact
1/*
2 * Copyright (c) 2002-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;

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

35#include "cpu/base.hh"
36#include "cpu/thread_context.hh"
37#include "cpu/intr_control.hh"
38#include "sim/builder.hh"
39#include "sim/sim_object.hh"
40
41using namespace std;
42
43IntrControl::IntrControl(const string &name, BaseCPU *c)
44 : SimObject(name), cpu(c)
45{}
46
47/* @todo
48 *Fix the cpu sim object parameter to be a system pointer
49 *instead, to avoid some extra dereferencing
50 */
51void
52IntrControl::post(int int_num, int index)
53{
54 std::vector<ThreadContext *> &tcvec = cpu->system->threadContexts;
55 BaseCPU *temp = tcvec[0]->getCpuPtr();
56 temp->post_interrupt(int_num, index);
57}
58
59void
60IntrControl::post(int cpu_id, int int_num, int index)
61{
62 std::vector<ThreadContext *> &tcvec = cpu->system->threadContexts;
63 BaseCPU *temp = tcvec[cpu_id]->getCpuPtr();
64 temp->post_interrupt(int_num, index);
65}
66
67void
68IntrControl::clear(int int_num, int index)
69{
70 std::vector<ThreadContext *> &tcvec = cpu->system->threadContexts;
71 BaseCPU *temp = tcvec[0]->getCpuPtr();
72 temp->clear_interrupt(int_num, index);
73}
74
75void
76IntrControl::clear(int cpu_id, int int_num, int index)
77{
78 std::vector<ThreadContext *> &tcvec = cpu->system->threadContexts;
79 BaseCPU *temp = tcvec[cpu_id]->getCpuPtr();
80 temp->clear_interrupt(int_num, index);
81}
82
83BEGIN_DECLARE_SIM_OBJECT_PARAMS(IntrControl)
84
85 SimObjectParam<BaseCPU *> cpu;
86
87END_DECLARE_SIM_OBJECT_PARAMS(IntrControl)
88
89BEGIN_INIT_SIM_OBJECT_PARAMS(IntrControl)
90
91 INIT_PARAM(cpu, "the cpu")
92
93END_INIT_SIM_OBJECT_PARAMS(IntrControl)
94
95CREATE_SIM_OBJECT(IntrControl)
96{
97 return new IntrControl(getInstanceName(), cpu);
98}
99
100REGISTER_SIM_OBJECT("IntrControl", IntrControl)