18#ifndef NAT_MIPS_LINUX_WATCH_H
19#define NAT_MIPS_LINUX_WATCH_H
21#include <asm/ptrace.h>
22#include "gdbsupport/break-common.h"
24#define MAX_DEBUG_REGISTER 8
29#ifndef PTRACE_GET_WATCH_REGS
30# define PTRACE_GET_WATCH_REGS 0xd0
31# define PTRACE_SET_WATCH_REGS 0xd1
83#define W_MASK (1 << W_BIT)
84#define R_MASK (1 << R_BIT)
85#define I_MASK (1 << I_BIT)
87#define IRW_MASK (I_MASK | R_MASK | W_MASK)
97 enum target_hw_bp_type
type;
110 CORE_ADDR
addr,
int len, uint32_t irw);
static struct mips_watchpoint * current_watches
static int watch_readback_valid
static struct pt_watch_regs watch_readback
CORE_ADDR mips_linux_watch_get_watchlo(struct pt_watch_regs *regs, int n)
void mips_linux_watch_set_watchlo(struct pt_watch_regs *regs, int n, CORE_ADDR value)
uint32_t mips_linux_watch_get_irw_mask(struct pt_watch_regs *regs, int n)
void mips_linux_watch_set_watchhi(struct pt_watch_regs *regs, int n, uint16_t value)
struct pt_watch_regs __attribute__
uint32_t mips_linux_watch_get_num_valid(struct pt_watch_regs *regs)
uint32_t mips_linux_watch_type_to_irw(enum target_hw_bp_type type)
#define MAX_DEBUG_REGISTER
int mips_linux_watch_try_one_watch(struct pt_watch_regs *regs, CORE_ADDR addr, int len, uint32_t irw)
void mips_linux_watch_populate_regs(struct mips_watchpoint *current_watches, struct pt_watch_regs *regs)
int mips_linux_read_watch_registers(long lwpid, struct pt_watch_regs *watch_readback, int *watch_readback_valid, int force)
uint32_t mips_linux_watch_get_watchhi(struct pt_watch_regs *regs, int n)
uint32_t watchlo[MAX_DEBUG_REGISTER]
uint16_t watchhi[MAX_DEBUG_REGISTER]
uint16_t watch_masks[MAX_DEBUG_REGISTER]
uint16_t watchhi[MAX_DEBUG_REGISTER]
uint64_t watchlo[MAX_DEBUG_REGISTER]
uint16_t watch_masks[MAX_DEBUG_REGISTER]
enum target_hw_bp_type type
struct mips_watchpoint * next
struct mips32_watch_regs mips32
enum pt_watch_style style
struct mips64_watch_regs mips64