| // 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 |