/* * QEMU breakpoint & watchpoint definitions * * Copyright (c) 2012 SUSE LINUX Products GmbH * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef EXEC_BREAKPOINT_H #define EXEC_BREAKPOINT_H #include "qemu/queue.h" #include "exec/vaddr.h" #include "exec/memattrs.h" /* Breakpoint/watchpoint flags */ #define BP_MEM_READ 0x01 #define BP_MEM_WRITE 0x02 #define BP_MEM_ACCESS (BP_MEM_READ | BP_MEM_WRITE) #define BP_STOP_BEFORE_ACCESS 0x04 /* 0x08 currently unused */ #define BP_GDB 0x10 #define BP_CPU 0x20 #define BP_ANY (BP_GDB | BP_CPU) #define BP_HIT_SHIFT 6 #define BP_WATCHPOINT_HIT_READ (BP_MEM_READ << BP_HIT_SHIFT) #define BP_WATCHPOINT_HIT_WRITE (BP_MEM_WRITE << BP_HIT_SHIFT) #define BP_WATCHPOINT_HIT (BP_MEM_ACCESS << BP_HIT_SHIFT) typedef struct CPUBreakpoint { vaddr pc; int flags; /* BP_* */ QTAILQ_ENTRY(CPUBreakpoint) entry; } CPUBreakpoint; typedef struct CPUWatchpoint { vaddr vaddr; vaddr len; vaddr hitaddr; MemTxAttrs hitattrs; int flags; /* BP_* */ QTAILQ_ENTRY(CPUWatchpoint) entry; } CPUWatchpoint; #endif