intdev.hh (13892:0182a0601f66) | intdev.hh (14291:722551795497) |
---|---|
1/* 2 * Copyright (c) 2012 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 36 unchanged lines hidden (view full) --- 45 46#include <cassert> 47#include <list> 48#include <string> 49 50#include "arch/x86/intmessage.hh" 51#include "arch/x86/x86_traits.hh" 52#include "mem/mport.hh" | 1/* 2 * Copyright (c) 2012 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 36 unchanged lines hidden (view full) --- 45 46#include <cassert> 47#include <list> 48#include <string> 49 50#include "arch/x86/intmessage.hh" 51#include "arch/x86/x86_traits.hh" 52#include "mem/mport.hh" |
53#include "params/X86IntLine.hh" 54#include "params/X86IntSinkPin.hh" 55#include "params/X86IntSourcePin.hh" | |
56#include "sim/sim_object.hh" 57 58namespace X86ISA { 59 60typedef std::list<int> ApicList; 61 62class IntDevice 63{ --- 52 unchanged lines hidden (view full) --- 116 { 117 } 118 119 virtual ~IntDevice() 120 {} 121 122 virtual void init(); 123 | 53#include "sim/sim_object.hh" 54 55namespace X86ISA { 56 57typedef std::list<int> ApicList; 58 59class IntDevice 60{ --- 52 unchanged lines hidden (view full) --- 113 { 114 } 115 116 virtual ~IntDevice() 117 {} 118 119 virtual void init(); 120 |
124 virtual void 125 signalInterrupt(int line) 126 { 127 panic("signalInterrupt not implemented.\n"); 128 } 129 130 virtual void 131 raiseInterruptPin(int number) 132 { 133 panic("raiseInterruptPin not implemented.\n"); 134 } 135 136 virtual void 137 lowerInterruptPin(int number) 138 { 139 panic("lowerInterruptPin not implemented.\n"); 140 } 141 | |
142 virtual Tick 143 recvMessage(PacketPtr pkt) 144 { 145 panic("recvMessage not implemented.\n"); 146 return 0; 147 } 148 149 virtual Tick --- 5 unchanged lines hidden (view full) --- 155 156 virtual AddrRangeList 157 getIntAddrRange() const 158 { 159 panic("intAddrRange not implemented.\n"); 160 } 161}; 162 | 121 virtual Tick 122 recvMessage(PacketPtr pkt) 123 { 124 panic("recvMessage not implemented.\n"); 125 return 0; 126 } 127 128 virtual Tick --- 5 unchanged lines hidden (view full) --- 134 135 virtual AddrRangeList 136 getIntAddrRange() const 137 { 138 panic("intAddrRange not implemented.\n"); 139 } 140}; 141 |
163class IntSinkPin : public SimObject 164{ 165 public: 166 IntDevice * device; 167 int number; 168 169 typedef X86IntSinkPinParams Params; 170 171 const Params * 172 params() const 173 { 174 return dynamic_cast<const Params *>(_params); 175 } 176 177 IntSinkPin(Params *p) : SimObject(p), 178 device(dynamic_cast<IntDevice *>(p->device)), number(p->number) 179 { 180 assert(device); 181 } 182}; 183 184class IntSourcePin : public SimObject 185{ 186 protected: 187 std::vector<IntSinkPin *> sinks; 188 189 public: 190 typedef X86IntSourcePinParams Params; 191 192 const Params * 193 params() const 194 { 195 return dynamic_cast<const Params *>(_params); 196 } 197 198 void 199 addSink(IntSinkPin *sink) 200 { 201 sinks.push_back(sink); 202 } 203 204 void 205 raise() 206 { 207 for (int i = 0; i < sinks.size(); i++) { 208 const IntSinkPin &pin = *sinks[i]; 209 pin.device->raiseInterruptPin(pin.number); 210 } 211 } 212 213 void 214 lower() 215 { 216 for (int i = 0; i < sinks.size(); i++) { 217 const IntSinkPin &pin = *sinks[i]; 218 pin.device->lowerInterruptPin(pin.number); 219 } 220 } 221 222 IntSourcePin(Params *p) : SimObject(p) 223 {} 224}; 225 226class IntLine : public SimObject 227{ 228 protected: 229 IntSourcePin *source; 230 IntSinkPin *sink; 231 232 public: 233 typedef X86IntLineParams Params; 234 235 const Params * 236 params() const 237 { 238 return dynamic_cast<const Params *>(_params); 239 } 240 241 IntLine(Params *p) : SimObject(p), source(p->source), sink(p->sink) 242 { 243 source->addSink(sink); 244 } 245}; 246 | |
247} // namespace X86ISA 248 249#endif //__DEV_X86_INTDEV_HH__ | 142} // namespace X86ISA 143 144#endif //__DEV_X86_INTDEV_HH__ |