From 6b23ef320a7e717b88f2802c6cdaa7a4dc3acb07 Mon Sep 17 00:00:00 2001 From: Alexander Klimov Date: Wed, 20 Jan 2021 11:16:06 +0000 Subject: [PATCH] base: Exclude the end of ChannelAddrRange Since [1] has changed the end of AddrRange to be excluded from the range, we need to do the same for ChannelAddrRange. [1] Idd1e75d5771d198c4b8142b28de0f3a6e9007a52 Change-Id: I901a03409f2204a502133a1d763d8112b1d08f8f Reviewed-by: Nikos Nikoleris Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/41653 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/base/channel_addr.hh | 7 ++++--- src/base/channel_addr.test.cc | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/base/channel_addr.hh b/src/base/channel_addr.hh index 55d227beed..ad32d04631 100644 --- a/src/base/channel_addr.hh +++ b/src/base/channel_addr.hh @@ -154,6 +154,7 @@ class ChannelAddr /** * The ChanneelAddrRange class describes a contiguous range of * addresses in a contiguous channel-local address space. + * The start is inclusive, the end is not. */ class ChannelAddrRange { @@ -173,15 +174,15 @@ class ChannelAddrRange constexpr ChannelAddrRange(const ChannelAddrRange &) = default; - constexpr ChannelAddr size() const { return _end - _start + 1; } + constexpr ChannelAddr size() const { return _end - _start; } - constexpr bool valid() const { return _start <= _end; } + constexpr bool valid() const { return _start < _end; } constexpr ChannelAddr start() const { return _start; } constexpr ChannelAddr end() const { return _end; } constexpr bool contains(ChannelAddr a) const { - return a >= _start && a <= _end; + return a >= _start && a < _end; } /** @} */ // end of api_channel_addr diff --git a/src/base/channel_addr.test.cc b/src/base/channel_addr.test.cc index 47ec0abc16..01aa8b798d 100644 --- a/src/base/channel_addr.test.cc +++ b/src/base/channel_addr.test.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 ARM Limited + * Copyright (c) 2019, 2021 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -50,7 +50,7 @@ TEST(ChannelAddrRange, DefaultInvalid) /* Ensure that range bounds are inclusive */ TEST(ChannelAddrRange, Range) { - ChannelAddrRange range(ChannelAddr(1), ChannelAddr(3)); + ChannelAddrRange range(ChannelAddr(1), ChannelAddr(4)); EXPECT_FALSE(range.contains(ChannelAddr(0))); EXPECT_TRUE(range.contains(ChannelAddr(1))); @@ -59,6 +59,6 @@ TEST(ChannelAddrRange, Range) EXPECT_FALSE(range.contains(ChannelAddr(4))); EXPECT_EQ(range.start(), ChannelAddr(1)); - EXPECT_EQ(range.end(), ChannelAddr(3)); + EXPECT_EQ(range.end(), ChannelAddr(4)); EXPECT_EQ(range.size(), ChannelAddr(3)); }