interrupts.hh (11168:f98eb2da15a4) interrupts.hh (11175:2324ed5fa9f4)
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

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

207 params() const
208 {
209 return dynamic_cast<const Params *>(_params);
210 }
211
212 /*
213 * Initialize this object by registering it with the IO APIC.
214 */
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

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

207 params() const
208 {
209 return dynamic_cast<const Params *>(_params);
210 }
211
212 /*
213 * Initialize this object by registering it with the IO APIC.
214 */
215 void init();
215 void init() override;
216
217 /*
218 * Functions to interact with the interrupt port from IntDevice.
219 */
216
217 /*
218 * Functions to interact with the interrupt port from IntDevice.
219 */
220 Tick read(PacketPtr pkt);
221 Tick write(PacketPtr pkt);
222 Tick recvMessage(PacketPtr pkt);
223 Tick recvResponse(PacketPtr pkt);
220 Tick read(PacketPtr pkt) override;
221 Tick write(PacketPtr pkt) override;
222 Tick recvMessage(PacketPtr pkt) override;
223 Tick recvResponse(PacketPtr pkt) override;
224
225 bool
226 triggerTimerInterrupt()
227 {
228 LVTEntry entry = regs[APIC_LVT_TIMER];
229 if (!entry.masked)
230 requestInterrupt(entry.vector, entry.deliveryMode, entry.trigger);
231 return entry.periodic;
232 }
233
224
225 bool
226 triggerTimerInterrupt()
227 {
228 LVTEntry entry = regs[APIC_LVT_TIMER];
229 if (!entry.masked)
230 requestInterrupt(entry.vector, entry.deliveryMode, entry.trigger);
231 return entry.periodic;
232 }
233
234 AddrRangeList getIntAddrRange() const;
234 AddrRangeList getIntAddrRange() const override;
235
236 BaseMasterPort &getMasterPort(const std::string &if_name,
235
236 BaseMasterPort &getMasterPort(const std::string &if_name,
237 PortID idx = InvalidPortID)
237 PortID idx = InvalidPortID) override
238 {
239 if (if_name == "int_master") {
240 return intMasterPort;
241 }
242 return BasicPioDevice::getMasterPort(if_name, idx);
243 }
244
245 BaseSlavePort &getSlavePort(const std::string &if_name,
238 {
239 if (if_name == "int_master") {
240 return intMasterPort;
241 }
242 return BasicPioDevice::getMasterPort(if_name, idx);
243 }
244
245 BaseSlavePort &getSlavePort(const std::string &if_name,
246 PortID idx = InvalidPortID)
246 PortID idx = InvalidPortID) override
247 {
248 if (if_name == "int_slave") {
249 return intSlavePort;
250 }
251 return BasicPioDevice::getSlavePort(if_name, idx);
252 }
253
254 /*

--- 70 unchanged lines hidden ---
247 {
248 if (if_name == "int_slave") {
249 return intSlavePort;
250 }
251 return BasicPioDevice::getSlavePort(if_name, idx);
252 }
253
254 /*

--- 70 unchanged lines hidden ---