diff options
Diffstat (limited to 'arch/arm/kernel/hw_breakpoint.c')
-rw-r--r-- | arch/arm/kernel/hw_breakpoint.c | 5 |
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 | } |