dbginfo
void ppc_gethwdinfo(struct ppc_debug_info *dbginfo)
dbginfo->version = 1;
dbginfo->num_instruction_bps = CONFIG_PPC_ADV_DEBUG_IACS;
dbginfo->num_data_bps = CONFIG_PPC_ADV_DEBUG_DACS;
dbginfo->num_condition_regs = CONFIG_PPC_ADV_DEBUG_DVCS;
dbginfo->data_bp_alignment = 4;
dbginfo->sizeof_condition = 4;
dbginfo->features = PPC_DEBUG_FEATURE_INSN_BP_RANGE |
dbginfo->features |= PPC_DEBUG_FEATURE_DATA_BP_RANGE |
void ppc_gethwdinfo(struct ppc_debug_info *dbginfo);
void ppc_gethwdinfo(struct ppc_debug_info *dbginfo)
dbginfo->version = 1;
dbginfo->num_instruction_bps = 0;
dbginfo->num_data_bps = nr_wp_slots();
dbginfo->num_data_bps = 0;
dbginfo->num_condition_regs = 0;
dbginfo->data_bp_alignment = sizeof(long);
dbginfo->sizeof_condition = 0;
dbginfo->features = PPC_DEBUG_FEATURE_DATA_BP_RANGE;
dbginfo->features |= PPC_DEBUG_FEATURE_DATA_BP_DAWR;
dbginfo->features = 0;
dbginfo->features |= PPC_DEBUG_FEATURE_DATA_BP_ARCH_31;
struct ppc_debug_info dbginfo;
ppc_gethwdinfo(&dbginfo);
if (copy_to_user(datavp, &dbginfo,
dbginfo(&ati_remote->interface->dev,
dbginfo(&ati_remote->interface->dev,
dbginfo(&ati_remote->interface->dev,
if (rtlpriv->dm.dbginfo.num_qry_beacon_pkt < 5)
if (rtlpriv->dm.dbginfo.num_qry_beacon_pkt < 5 &&
if (rtlpriv->dm.dbginfo.num_non_be_pkt > 0x100)
rtlpriv->dm.dbginfo.num_non_be_pkt = 0;
rtl_priv(hw)->dm.dbginfo.num_qry_beacon_pkt++;
rtl_priv(hw)->dm.dbginfo.num_non_be_pkt++;
rtlpriv->dm.dbginfo.num_qry_beacon_pkt = 0;
rtl_priv(hw)->dm.dbginfo.num_qry_beacon_pkt++;
if (rtlpriv->dm.dbginfo.num_non_be_pkt > 0x100)
rtlpriv->dm.dbginfo.num_non_be_pkt = 0;
rtlpriv->dm.dbginfo.num_qry_beacon_pkt = 0;
if (rtlpriv->dm.dbginfo.num_qry_beacon_pkt < 10)
if ((rtlpriv->dm.dbginfo.num_qry_beacon_pkt < 10) &&
rtl_priv(hw)->dm.dbginfo.num_qry_beacon_pkt++;
rtl_priv(hw)->dm.dbginfo.num_non_be_pkt++;
struct dm_phy_dbg_info dbginfo;
struct ppc_debug_info dbginfo;
if (ptrace(PPC_PTRACE_GETHWDBGINFO, child_pid, NULL, &dbginfo)) {
*arch_31 = !!(dbginfo.features & PPC_DEBUG_FEATURE_DATA_BP_ARCH_31);
return dbginfo.num_data_bps;
static void get_dbginfo(pid_t child_pid, struct ppc_debug_info *dbginfo)
if (ptrace(PPC_PTRACE_GETHWDBGINFO, child_pid, NULL, dbginfo)) {
run_tests(pid_t child_pid, struct ppc_debug_info *dbginfo, bool dawr)
if (dbginfo->features & PPC_DEBUG_FEATURE_DATA_BP_RANGE) {
if (dbginfo->num_data_bps > 1) {
struct ppc_debug_info dbginfo;
static bool dawr_present(struct ppc_debug_info *dbginfo)
get_dbginfo(child_pid, &dbginfo);
SKIP_IF_MSG(dbginfo.num_data_bps == 0, "No data breakpoints present");
dawr = dawr_present(&dbginfo);
run_tests(child_pid, &dbginfo, dawr);
return !!(dbginfo->features & PPC_DEBUG_FEATURE_DATA_BP_DAWR);
struct ppc_debug_info dbginfo;
FAIL_IF_MSG(ppc_ptrace_gethwdbginfo(pid, &dbginfo), "PPC_PTRACE_GETHWDBGINFO failed");
SKIP_IF_MSG(dbginfo.num_data_bps <= 1, "Not enough data watchpoints (need at least 2)");
static long ppc_ptrace_gethwdbginfo(pid_t pid, struct ppc_debug_info *dbginfo)
return sys_ptrace(PPC_PTRACE_GETHWDBGINFO, pid, 0, (unsigned long)dbginfo);