Lines Matching refs:bp
334 int arch_install_hw_breakpoint(struct perf_event *bp) in arch_install_hw_breakpoint() argument
336 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_install_hw_breakpoint()
362 *slot = bp; in arch_install_hw_breakpoint()
391 void arch_uninstall_hw_breakpoint(struct perf_event *bp) in arch_uninstall_hw_breakpoint() argument
393 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_uninstall_hw_breakpoint()
413 if (*slot == bp) { in arch_uninstall_hw_breakpoint()
460 int arch_check_bp_in_kernelspace(struct perf_event *bp) in arch_check_bp_in_kernelspace() argument
464 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_check_bp_in_kernelspace()
522 static int arch_build_bp_info(struct perf_event *bp) in arch_build_bp_info() argument
524 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_build_bp_info()
527 switch (bp->attr.bp_type) { in arch_build_bp_info()
545 switch (bp->attr.bp_len) { in arch_build_bp_info()
576 info->address = bp->attr.bp_addr; in arch_build_bp_info()
580 if (arch_check_bp_in_kernelspace(bp)) in arch_build_bp_info()
584 info->ctrl.enabled = !bp->attr.disabled; in arch_build_bp_info()
595 int arch_validate_hwbkpt_settings(struct perf_event *bp) in arch_validate_hwbkpt_settings() argument
597 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in arch_validate_hwbkpt_settings()
606 ret = arch_build_bp_info(bp); in arch_validate_hwbkpt_settings()
635 if (!bp->overflow_handler) { in arch_validate_hwbkpt_settings()
644 if (arch_check_bp_in_kernelspace(bp)) in arch_validate_hwbkpt_settings()
651 if (!bp->hw.target) in arch_validate_hwbkpt_settings()
671 static void enable_single_step(struct perf_event *bp, u32 addr) in enable_single_step() argument
673 struct arch_hw_breakpoint *info = counter_arch_bp(bp); in enable_single_step()
675 arch_uninstall_hw_breakpoint(bp); in enable_single_step()
682 arch_install_hw_breakpoint(bp); in enable_single_step()
685 static void disable_single_step(struct perf_event *bp) in disable_single_step() argument
687 arch_uninstall_hw_breakpoint(bp); in disable_single_step()
688 counter_arch_bp(bp)->step_ctrl.enabled = 0; in disable_single_step()
689 arch_install_hw_breakpoint(bp); in disable_single_step()
802 struct perf_event *bp, **slots; in breakpoint_handler() local
815 bp = slots[i]; in breakpoint_handler()
817 if (bp == NULL) in breakpoint_handler()
820 info = counter_arch_bp(bp); in breakpoint_handler()
833 perf_bp_event(bp, regs); in breakpoint_handler()
834 if (!bp->overflow_handler) in breakpoint_handler()
835 enable_single_step(bp, addr); in breakpoint_handler()
842 disable_single_step(bp); in breakpoint_handler()
1123 void hw_breakpoint_pmu_read(struct perf_event *bp) in hw_breakpoint_pmu_read() argument