blob: f62effafaca8d1c30e6a3a36154c9353ebafd848 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Do not include directly, use "arch.h".
#pragma once
#include <stdint.h>
#include <zircon/syscalls/debug.h>
namespace debug_agent {
namespace arch {
// The type that is large enough to hold the debug breakpoint CPU instruction.
using BreakInstructionType = uint8_t;
#define FLAG_VALUE(val, shift) ((val) & (shift))
// DR6 -------------------------------------------------------------------------
constexpr uint64_t kDR6B0 = (1 << 0);
constexpr uint64_t kDR6B1 = (1 << 1);
constexpr uint64_t kDR6B2 = (1 << 2);
constexpr uint64_t kDR6B3 = (1 << 3);
constexpr uint64_t kDR6BD = (1 << 13);
constexpr uint64_t kDR6BS = (1 << 14);
constexpr uint64_t kDR6BT = (1 << 15);
constexpr uint64_t kDR6Mask (0xffff0ff0ul);
// DR7 -------------------------------------------------------------------------
constexpr uint64_t kDR7L0 = (1 << 0);
constexpr uint64_t kDR7G0 = (1 << 1);
constexpr uint64_t kDR7L1 = (1 << 2);
constexpr uint64_t kDR7G1 = (1 << 3);
constexpr uint64_t kDR7L2 = (1 << 4);
constexpr uint64_t kDR7G2 = (1 << 5);
constexpr uint64_t kDR7L3 = (1 << 6);
constexpr uint64_t kDR7G3 = (1 << 7);
// Not used for now.
constexpr uint64_t kDR7LE = (1 << 8);
constexpr uint64_t kDR7GE = (1 << 9);
constexpr uint64_t kDR7GD = (1 << 13);
constexpr uint64_t kDR7RW0 = (1 << 16);
constexpr uint64_t kDR7LEN0 = (1 << 18);
constexpr uint64_t kDR7RW1 = (1 << 20);
constexpr uint64_t kDR7LEN1 = (1 << 22);
constexpr uint64_t kDR7RW2 = (1 << 24);
constexpr uint64_t kDR7LEN2 = (1 << 26);
constexpr uint64_t kDR7RW3 = (1 << 28);
constexpr uint64_t kDR7LEN3 = (1 << 30);
constexpr uint64_t kDR7Mask ((1ul << 10) | kDR7LE | kDR7GE);
} // namespace arch
} // namespace debug_agent