110995Sandreas.sandberg@arm.com# Copyright (c) 2014-2015 ARM Limited
210995Sandreas.sandberg@arm.com# All rights reserved.
310995Sandreas.sandberg@arm.com#
410995Sandreas.sandberg@arm.com# The license below extends only to copyright in the software and shall
510995Sandreas.sandberg@arm.com# not be construed as granting a license to any other intellectual
610995Sandreas.sandberg@arm.com# property including but not limited to intellectual property relating
710995Sandreas.sandberg@arm.com# to a hardware implementation of the functionality of the software
810995Sandreas.sandberg@arm.com# licensed hereunder.  You may use the software subject to the license
910995Sandreas.sandberg@arm.com# terms below provided that you ensure that this notice is replicated
1010995Sandreas.sandberg@arm.com# unmodified and in its entirety in all distributions of the software,
1110995Sandreas.sandberg@arm.com# modified or unmodified, in source code or in binary form.
1210995Sandreas.sandberg@arm.com#
1310995Sandreas.sandberg@arm.com# Redistribution and use in source and binary forms, with or without
1410995Sandreas.sandberg@arm.com# modification, are permitted provided that the following conditions are
1510995Sandreas.sandberg@arm.com# met: redistributions of source code must retain the above copyright
1610995Sandreas.sandberg@arm.com# notice, this list of conditions and the following disclaimer;
1710995Sandreas.sandberg@arm.com# redistributions in binary form must reproduce the above copyright
1810995Sandreas.sandberg@arm.com# notice, this list of conditions and the following disclaimer in the
1910995Sandreas.sandberg@arm.com# documentation and/or other materials provided with the distribution;
2010995Sandreas.sandberg@arm.com# neither the name of the copyright holders nor the names of its
2110995Sandreas.sandberg@arm.com# contributors may be used to endorse or promote products derived from
2210995Sandreas.sandberg@arm.com# this software without specific prior written permission.
2310995Sandreas.sandberg@arm.com#
2410995Sandreas.sandberg@arm.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2510995Sandreas.sandberg@arm.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2610995Sandreas.sandberg@arm.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2710995Sandreas.sandberg@arm.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2810995Sandreas.sandberg@arm.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2910995Sandreas.sandberg@arm.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3010995Sandreas.sandberg@arm.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3110995Sandreas.sandberg@arm.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3210995Sandreas.sandberg@arm.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3310995Sandreas.sandberg@arm.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3410995Sandreas.sandberg@arm.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3510995Sandreas.sandberg@arm.com#
3610995Sandreas.sandberg@arm.com# Authors: Andreas Hansson
3710995Sandreas.sandberg@arm.com#          Andreas Sandberg
3810995Sandreas.sandberg@arm.com
3910995Sandreas.sandberg@arm.comfrom m5.params import *
4010995Sandreas.sandberg@arm.comfrom m5.proxy import *
4113665Sandreas.sandberg@arm.comfrom m5.objects.BaseMemProbe import BaseMemProbe
4210995Sandreas.sandberg@arm.com
4310995Sandreas.sandberg@arm.comclass StackDistProbe(BaseMemProbe):
4410995Sandreas.sandberg@arm.com    type = 'StackDistProbe'
4510995Sandreas.sandberg@arm.com    cxx_header = "mem/probes/stack_dist.hh"
4610995Sandreas.sandberg@arm.com
4710995Sandreas.sandberg@arm.com    system = Param.System(Parent.any,
4810995Sandreas.sandberg@arm.com                          "System to use when determining system cache "
4910995Sandreas.sandberg@arm.com                          "line size")
5010995Sandreas.sandberg@arm.com
5110995Sandreas.sandberg@arm.com    line_size = Param.Unsigned(Parent.cache_line_size,
5210995Sandreas.sandberg@arm.com                               "Cache line size in bytes (must be larger or "
5310995Sandreas.sandberg@arm.com                               "equal to the system's line size)")
5410995Sandreas.sandberg@arm.com
5510995Sandreas.sandberg@arm.com    # enable verification stack
5610995Sandreas.sandberg@arm.com    verify = Param.Bool(False, "Verify behaviuor with reference implementation")
5710995Sandreas.sandberg@arm.com
5810995Sandreas.sandberg@arm.com    # linear histogram bins and enable/disable
5910995Sandreas.sandberg@arm.com    linear_hist_bins = Param.Unsigned('16', "Bins in linear histograms")
6010995Sandreas.sandberg@arm.com    disable_linear_hists = Param.Bool(False, "Disable linear histograms")
6110995Sandreas.sandberg@arm.com
6210995Sandreas.sandberg@arm.com    # logarithmic histogram bins and enable/disable
6310995Sandreas.sandberg@arm.com    log_hist_bins = Param.Unsigned('32', "Bins in logarithmic histograms")
6410995Sandreas.sandberg@arm.com    disable_log_hists = Param.Bool(False, "Disable logarithmic histograms")
65