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 --- 35 unchanged lines hidden (view full) --- 44#define __DEV_X86_INTDEV_HH__ 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{ 64 protected: 65 class IntSlavePort : public MessageSlavePort 66 { 67 IntDevice * device; 68 69 public: |
70 IntSlavePort(const std::string& _name, SimObject* _parent, |
71 IntDevice* dev) : 72 MessageSlavePort(_name, _parent), device(dev) 73 { 74 } 75 76 AddrRangeList getAddrRanges() const 77 { 78 return device->getIntAddrRange(); --- 7 unchanged lines hidden (view full) --- 86 } 87 }; 88 89 class IntMasterPort : public MessageMasterPort 90 { 91 IntDevice* device; 92 Tick latency; 93 public: |
94 IntMasterPort(const std::string& _name, SimObject* _parent, |
95 IntDevice* dev, Tick _latency) : 96 MessageMasterPort(_name, _parent), device(dev), latency(_latency) 97 { 98 } 99 100 Tick recvResponse(PacketPtr pkt) 101 { 102 return device->recvResponse(pkt); 103 } 104 105 // This is x86 focused, so if this class becomes generic, this would 106 // need to be moved into a subclass. 107 void sendMessage(ApicList apics, 108 TriggerIntMessage message, bool timing); 109 }; 110 111 IntMasterPort intMasterPort; 112 113 public: |
114 IntDevice(SimObject * parent, Tick latency = 0) : |
115 intMasterPort(parent->name() + ".int_master", parent, this, latency) 116 { 117 } 118 119 virtual ~IntDevice() 120 {} 121 122 virtual void init(); --- 127 unchanged lines hidden --- |