Lines Matching refs:info
9 static bool dar_in_user_range(unsigned long dar, struct arch_hw_breakpoint *info)
11 return ((info->address <= dar) && (dar - info->address < info->len));
15 struct arch_hw_breakpoint *info)
17 return ((ea < info->address + info->len) &&
18 (ea + size > info->address));
21 static bool dar_in_hw_range(unsigned long dar, struct arch_hw_breakpoint *info)
25 hw_start_addr = ALIGN_DOWN(info->address, HW_BREAKPOINT_SIZE);
26 hw_end_addr = ALIGN(info->address + info->len, HW_BREAKPOINT_SIZE);
32 struct arch_hw_breakpoint *info)
44 hw_start_addr = ALIGN_DOWN(info->address, align_size);
45 hw_end_addr = ALIGN(info->address + info->len, align_size);
57 struct arch_hw_breakpoint *info)
59 if (OP_IS_LOAD(type) && !(info->type & HW_BRK_TYPE_READ))
67 if ((OP_IS_STORE(type) || type == CACHEOP) && !(info->type & HW_BRK_TYPE_WRITE))
70 if (is_kernel_addr(regs->nip) && !(info->type & HW_BRK_TYPE_KERNEL))
73 if (user_mode(regs) && !(info->type & HW_BRK_TYPE_USER))
85 struct arch_hw_breakpoint *info)
87 bool in_user_range = dar_in_user_range(regs->dar, info);
96 info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ;
102 !dar_in_hw_range(regs->dar, info))
108 dawrx_constraints = check_dawrx_constraints(regs, type, info);
112 !dar_in_hw_range(regs->dar, info))
118 if (ea_user_range_overlaps(ea, size, info))
121 if (ea_hw_range_overlaps(ea, size, info)) {
123 info->type |= HW_BRK_TYPE_EXTRANEOUS_IRQ;