RubyPortProxy.hh revision 8706
19363Snilay@cs.wisc.edu/*
29363Snilay@cs.wisc.edu * Copyright (c) 2011 ARM Limited
39363Snilay@cs.wisc.edu * All rights reserved
49363Snilay@cs.wisc.edu *
59363Snilay@cs.wisc.edu * The license below extends only to copyright in the software and shall
69363Snilay@cs.wisc.edu * not be construed as granting a license to any other intellectual
79363Snilay@cs.wisc.edu * property including but not limited to intellectual property relating
89363Snilay@cs.wisc.edu * to a hardware implementation of the functionality of the software
99363Snilay@cs.wisc.edu * licensed hereunder.  You may use the software subject to the license
109363Snilay@cs.wisc.edu * terms below provided that you ensure that this notice is replicated
119363Snilay@cs.wisc.edu * unmodified and in its entirety in all distributions of the software,
129363Snilay@cs.wisc.edu * modified or unmodified, in source code or in binary form.
139363Snilay@cs.wisc.edu *
149363Snilay@cs.wisc.edu * Redistribution and use in source and binary forms, with or without
159363Snilay@cs.wisc.edu * modification, are permitted provided that the following conditions are
169363Snilay@cs.wisc.edu * met: redistributions of source code must retain the above copyright
179363Snilay@cs.wisc.edu * notice, this list of conditions and the following disclaimer;
189363Snilay@cs.wisc.edu * redistributions in binary form must reproduce the above copyright
199363Snilay@cs.wisc.edu * notice, this list of conditions and the following disclaimer in the
209363Snilay@cs.wisc.edu * documentation and/or other materials provided with the distribution;
219363Snilay@cs.wisc.edu * neither the name of the copyright holders nor the names of its
229363Snilay@cs.wisc.edu * contributors may be used to endorse or promote products derived from
239363Snilay@cs.wisc.edu * this software without specific prior written permission.
249363Snilay@cs.wisc.edu *
259363Snilay@cs.wisc.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
269363Snilay@cs.wisc.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
279363Snilay@cs.wisc.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
289363Snilay@cs.wisc.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
299363Snilay@cs.wisc.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
309363Snilay@cs.wisc.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
319363Snilay@cs.wisc.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3211108Sdavid.hashe@amd.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
339363Snilay@cs.wisc.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
349363Snilay@cs.wisc.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
359363Snilay@cs.wisc.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
369363Snilay@cs.wisc.edu *
379363Snilay@cs.wisc.edu * Authors: Andreas Hansson
389363Snilay@cs.wisc.edu */
399363Snilay@cs.wisc.edu
409363Snilay@cs.wisc.edu/**
419363Snilay@cs.wisc.edu * @file
429363Snilay@cs.wisc.edu * RobyPortProxy for connecting system port to Ruby
439363Snilay@cs.wisc.edu *
449363Snilay@cs.wisc.edu * A trivial wrapper that allows the system port to connect to Ruby
4511025Snilay@cs.wisc.edu * and use nothing but functional accesses.
4611025Snilay@cs.wisc.edu */
4711025Snilay@cs.wisc.edu
4810466Sandreas.hansson@arm.com#ifndef __MEM_RUBY_SYSTEM_RUBYPORTPROXY_HH__
4910466Sandreas.hansson@arm.com#define __MEM_RUBY_SYSTEM_RUBYPORTPROXY_HH__
509363Snilay@cs.wisc.edu
519363Snilay@cs.wisc.edu#include "mem/ruby/system/RubyPort.hh"
529363Snilay@cs.wisc.edu#include "params/RubyPortProxy.hh"
539363Snilay@cs.wisc.edu
549363Snilay@cs.wisc.educlass RubyPortProxy : public RubyPort
559363Snilay@cs.wisc.edu{
569363Snilay@cs.wisc.edu
579363Snilay@cs.wisc.edu  public:
589363Snilay@cs.wisc.edu
599363Snilay@cs.wisc.edu    /**
609363Snilay@cs.wisc.edu     * Create a new RubyPortProxy.
619363Snilay@cs.wisc.edu     *
629363Snilay@cs.wisc.edu     * @param p Parameters inherited from the RubyPort
639363Snilay@cs.wisc.edu     */
649363Snilay@cs.wisc.edu    RubyPortProxy(const RubyPortProxyParams* p);
659363Snilay@cs.wisc.edu
669363Snilay@cs.wisc.edu    /**
679363Snilay@cs.wisc.edu     * Destruct a RubyPortProxy.
689363Snilay@cs.wisc.edu     */
699363Snilay@cs.wisc.edu    virtual ~RubyPortProxy();
709363Snilay@cs.wisc.edu
719363Snilay@cs.wisc.edu    /**
729363Snilay@cs.wisc.edu     * Initialise a RubyPortProxy by doing nothing and avoid
739363Snilay@cs.wisc.edu     * involving the super class.
749363Snilay@cs.wisc.edu     */
759363Snilay@cs.wisc.edu    void init();
769363Snilay@cs.wisc.edu
779363Snilay@cs.wisc.edu    /**
789363Snilay@cs.wisc.edu     * Pure virtual member in the super class that we are forced to
799363Snilay@cs.wisc.edu     * implement even if it is never used (since there are only
809363Snilay@cs.wisc.edu     * functional accesses).
819363Snilay@cs.wisc.edu     *
829363Snilay@cs.wisc.edu     * @param pkt The packet to serve to Ruby
839363Snilay@cs.wisc.edu     * @returns always a NULL status
849363Snilay@cs.wisc.edu     */
859363Snilay@cs.wisc.edu    RequestStatus makeRequest(PacketPtr pkt);
869363Snilay@cs.wisc.edu
879363Snilay@cs.wisc.edu    /**
889363Snilay@cs.wisc.edu     * Pure virtual member in the super class that we are forced to
8911523Sdavid.guillen@arm.com     * implement even if it is never used (since there are only
9011523Sdavid.guillen@arm.com     * functional accesses).
919363Snilay@cs.wisc.edu     *
929363Snilay@cs.wisc.edu     * @returns always 0
939363Snilay@cs.wisc.edu     */
949363Snilay@cs.wisc.edu    int outstandingCount() const { return 0; }
959363Snilay@cs.wisc.edu
969363Snilay@cs.wisc.edu    /**
979363Snilay@cs.wisc.edu     * Pure virtual member in the super class that we are forced to
989363Snilay@cs.wisc.edu     * implement even if it is never used (since there are only
999363Snilay@cs.wisc.edu     * functional accesses).
1009363Snilay@cs.wisc.edu     *
1019363Snilay@cs.wisc.edu     * @returns always false
1029363Snilay@cs.wisc.edu     */
1039363Snilay@cs.wisc.edu    bool isDeadlockEventScheduled() const { return false; }
1049363Snilay@cs.wisc.edu
1059363Snilay@cs.wisc.edu    /**
1069363Snilay@cs.wisc.edu     * Pure virtual member in the super class that we are forced to
1079363Snilay@cs.wisc.edu     * implement even if it is never used (since there are only
1089363Snilay@cs.wisc.edu     * functional accesses).
1099363Snilay@cs.wisc.edu     */
1109363Snilay@cs.wisc.edu    void descheduleDeadlockEvent() { }
1119363Snilay@cs.wisc.edu
1129363Snilay@cs.wisc.edu};
1139363Snilay@cs.wisc.edu
1149363Snilay@cs.wisc.edu#endif // __MEM_RUBY_SYSTEM_RUBYPORTPROXY_HH__
1159363Snilay@cs.wisc.edu