blob: b6e6c404aaad98b8969af7563f5b50aab93192cd [file] [log] [blame]
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "cheriot/cheriot_debug_info.h"
#include "mpact/sim/generic/type_helpers.h"
namespace mpact {
namespace sim {
namespace cheriot {
using ::mpact::sim::generic::operator*; // NOLINT: is used below (clang error).
constexpr char kPcName[] = "pcc";
constexpr char kC0Name[] = "c0";
constexpr char kC1Name[] = "c1";
constexpr char kC2Name[] = "c2";
constexpr char kC3Name[] = "c3";
constexpr char kC4Name[] = "c4";
constexpr char kC5Name[] = "c5";
constexpr char kC6Name[] = "c6";
constexpr char kC7Name[] = "c7";
constexpr char kC8Name[] = "c8";
constexpr char kC9Name[] = "c9";
constexpr char kC10Name[] = "c10";
constexpr char kC11Name[] = "c11";
constexpr char kC12Name[] = "c12";
constexpr char kC13Name[] = "c13";
constexpr char kC14Name[] = "c14";
constexpr char kC15Name[] = "c15";
constexpr char kC16Name[] = "c16";
constexpr char kC17Name[] = "c17";
constexpr char kC18Name[] = "c18";
constexpr char kC19Name[] = "c19";
constexpr char kC20Name[] = "c20";
constexpr char kC21Name[] = "c21";
constexpr char kC22Name[] = "c22";
constexpr char kC23Name[] = "c23";
constexpr char kC24Name[] = "c24";
constexpr char kC25Name[] = "c25";
constexpr char kC26Name[] = "c26";
constexpr char kC27Name[] = "c27";
constexpr char kC28Name[] = "c28";
constexpr char kC29Name[] = "c29";
constexpr char kC30Name[] = "c30";
constexpr char kC31Name[] = "c31";
constexpr char kF0Name[] = "f0";
constexpr char kF1Name[] = "f1";
constexpr char kF2Name[] = "f2";
constexpr char kF3Name[] = "f3";
constexpr char kF4Name[] = "f4";
constexpr char kF5Name[] = "f5";
constexpr char kF6Name[] = "f6";
constexpr char kF7Name[] = "f7";
constexpr char kF8Name[] = "f8";
constexpr char kF9Name[] = "f9";
constexpr char kF10Name[] = "f10";
constexpr char kF11Name[] = "f11";
constexpr char kF12Name[] = "f12";
constexpr char kF13Name[] = "f13";
constexpr char kF14Name[] = "f14";
constexpr char kF15Name[] = "f15";
constexpr char kF16Name[] = "f16";
constexpr char kF17Name[] = "f17";
constexpr char kF18Name[] = "f18";
constexpr char kF19Name[] = "f19";
constexpr char kF20Name[] = "f20";
constexpr char kF21Name[] = "f21";
constexpr char kF22Name[] = "f22";
constexpr char kF23Name[] = "f23";
constexpr char kF24Name[] = "f24";
constexpr char kF25Name[] = "f25";
constexpr char kF26Name[] = "f26";
constexpr char kF27Name[] = "f27";
constexpr char kF28Name[] = "f28";
constexpr char kF29Name[] = "f29";
constexpr char kF30Name[] = "f30";
constexpr char kF31Name[] = "f31";
CheriotDebugInfo::CheriotDebugInfo()
: debug_register_map_({{*DebugRegisterEnum::kPc, kPcName},
{*DebugRegisterEnum::kC0, kC0Name},
{*DebugRegisterEnum::kC1, kC1Name},
{*DebugRegisterEnum::kC2, kC2Name},
{*DebugRegisterEnum::kC3, kC3Name},
{*DebugRegisterEnum::kC4, kC4Name},
{*DebugRegisterEnum::kC5, kC5Name},
{*DebugRegisterEnum::kC6, kC6Name},
{*DebugRegisterEnum::kC7, kC7Name},
{*DebugRegisterEnum::kC8, kC8Name},
{*DebugRegisterEnum::kC9, kC9Name},
{*DebugRegisterEnum::kC10, kC10Name},
{*DebugRegisterEnum::kC11, kC11Name},
{*DebugRegisterEnum::kC12, kC12Name},
{*DebugRegisterEnum::kC13, kC13Name},
{*DebugRegisterEnum::kC14, kC14Name},
{*DebugRegisterEnum::kC15, kC15Name},
{*DebugRegisterEnum::kC16, kC16Name},
{*DebugRegisterEnum::kC17, kC17Name},
{*DebugRegisterEnum::kC18, kC18Name},
{*DebugRegisterEnum::kC19, kC19Name},
{*DebugRegisterEnum::kC20, kC20Name},
{*DebugRegisterEnum::kC21, kC21Name},
{*DebugRegisterEnum::kC22, kC22Name},
{*DebugRegisterEnum::kC23, kC23Name},
{*DebugRegisterEnum::kC24, kC24Name},
{*DebugRegisterEnum::kC25, kC25Name},
{*DebugRegisterEnum::kC26, kC26Name},
{*DebugRegisterEnum::kC27, kC27Name},
{*DebugRegisterEnum::kC28, kC28Name},
{*DebugRegisterEnum::kC29, kC29Name},
{*DebugRegisterEnum::kC30, kC30Name},
{*DebugRegisterEnum::kC31, kC31Name},
{*DebugRegisterEnum::kF0, kF0Name},
{*DebugRegisterEnum::kF1, kF1Name},
{*DebugRegisterEnum::kF2, kF2Name},
{*DebugRegisterEnum::kF3, kF3Name},
{*DebugRegisterEnum::kF4, kF4Name},
{*DebugRegisterEnum::kF5, kF5Name},
{*DebugRegisterEnum::kF6, kF6Name},
{*DebugRegisterEnum::kF7, kF7Name},
{*DebugRegisterEnum::kF8, kF8Name},
{*DebugRegisterEnum::kF9, kF9Name},
{*DebugRegisterEnum::kF10, kF10Name},
{*DebugRegisterEnum::kF11, kF11Name},
{*DebugRegisterEnum::kF12, kF12Name},
{*DebugRegisterEnum::kF13, kF13Name},
{*DebugRegisterEnum::kF14, kF14Name},
{*DebugRegisterEnum::kF15, kF15Name},
{*DebugRegisterEnum::kF16, kF16Name},
{*DebugRegisterEnum::kF17, kF17Name},
{*DebugRegisterEnum::kF18, kF18Name},
{*DebugRegisterEnum::kF19, kF19Name},
{*DebugRegisterEnum::kF20, kF20Name},
{*DebugRegisterEnum::kF21, kF21Name},
{*DebugRegisterEnum::kF22, kF22Name},
{*DebugRegisterEnum::kF23, kF23Name},
{*DebugRegisterEnum::kF24, kF24Name},
{*DebugRegisterEnum::kF25, kF25Name},
{*DebugRegisterEnum::kF26, kF26Name},
{*DebugRegisterEnum::kF27, kF27Name},
{*DebugRegisterEnum::kF28, kF28Name},
{*DebugRegisterEnum::kF29, kF29Name},
{*DebugRegisterEnum::kF30, kF30Name},
{*DebugRegisterEnum::kF31, kF31Name}}) {}
CheriotDebugInfo *CheriotDebugInfo::Instance() {
static CheriotDebugInfo *instance_ = nullptr;
if (instance_ == nullptr) {
instance_ = new CheriotDebugInfo();
}
return instance_;
}
} // namespace cheriot
} // namespace sim
} // namespace mpact