aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/hw_breakpoint.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/hw_breakpoint.c')
-rw-r--r--arch/arm/kernel/hw_breakpoint.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c
index af8b8e15f589..b0c195e3a06d 100644
--- a/arch/arm/kernel/hw_breakpoint.c
+++ b/arch/arm/kernel/hw_breakpoint.c
@@ -544,6 +544,7 @@ static int arch_build_bp_info(struct perf_event *bp,
544 if ((hw->ctrl.type != ARM_BREAKPOINT_EXECUTE) 544 if ((hw->ctrl.type != ARM_BREAKPOINT_EXECUTE)
545 && max_watchpoint_len >= 8) 545 && max_watchpoint_len >= 8)
546 break; 546 break;
547 /* Else, fall through */
547 default: 548 default:
548 return -EINVAL; 549 return -EINVAL;
549 } 550 }
@@ -608,10 +609,12 @@ int hw_breakpoint_arch_parse(struct perf_event *bp,
608 /* Allow halfword watchpoints and breakpoints. */ 609 /* Allow halfword watchpoints and breakpoints. */
609 if (hw->ctrl.len == ARM_BREAKPOINT_LEN_2) 610 if (hw->ctrl.len == ARM_BREAKPOINT_LEN_2)
610 break; 611 break;
612 /* Else, fall through */
611 case 3: 613 case 3:
612 /* Allow single byte watchpoint. */ 614 /* Allow single byte watchpoint. */
613 if (hw->ctrl.len == ARM_BREAKPOINT_LEN_1) 615 if (hw->ctrl.len == ARM_BREAKPOINT_LEN_1)
614 break; 616 break;
617 /* Else, fall through */
615 default: 618 default:
616 ret = -EINVAL; 619 ret = -EINVAL;
617 goto out; 620 goto out;
@@ -861,6 +864,7 @@ static int hw_breakpoint_pending(unsigned long addr, unsigned int fsr,
861 break; 864 break;
862 case ARM_ENTRY_ASYNC_WATCHPOINT: 865 case ARM_ENTRY_ASYNC_WATCHPOINT:
863 WARN(1, "Asynchronous watchpoint exception taken. Debugging results may be unreliable\n"); 866 WARN(1, "Asynchronous watchpoint exception taken. Debugging results may be unreliable\n");
867 /* Fall through */
864 case ARM_ENTRY_SYNC_WATCHPOINT: 868 case ARM_ENTRY_SYNC_WATCHPOINT:
865 watchpoint_handler(addr, fsr, regs); 869 watchpoint_handler(addr, fsr, regs);
866 break; 870 break;
@@ -909,6 +913,7 @@ static bool core_has_os_save_restore(void)
909 ARM_DBG_READ(c1, c1, 4, oslsr); 913 ARM_DBG_READ(c1, c1, 4, oslsr);
910 if (oslsr & ARM_OSLSR_OSLM0) 914 if (oslsr & ARM_OSLSR_OSLM0)
911 return true; 915 return true;
916 /* Else, fall through */
912 default: 917 default:
913 return false; 918 return false;
914 } 919 }