diff options
Diffstat (limited to 'arch/sh/kernel/traps_64.c')
-rw-r--r-- | arch/sh/kernel/traps_64.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c index fda6355654b7..6713ca97e553 100644 --- a/arch/sh/kernel/traps_64.c +++ b/arch/sh/kernel/traps_64.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/sysctl.h> | 25 | #include <linux/sysctl.h> |
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/perf_event.h> | ||
27 | #include <asm/system.h> | 28 | #include <asm/system.h> |
28 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
29 | #include <asm/io.h> | 30 | #include <asm/io.h> |
@@ -433,6 +434,8 @@ static int misaligned_load(struct pt_regs *regs, | |||
433 | return error; | 434 | return error; |
434 | } | 435 | } |
435 | 436 | ||
437 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, 0, regs, address); | ||
438 | |||
436 | destreg = (opcode >> 4) & 0x3f; | 439 | destreg = (opcode >> 4) & 0x3f; |
437 | if (user_mode(regs)) { | 440 | if (user_mode(regs)) { |
438 | __u64 buffer; | 441 | __u64 buffer; |
@@ -509,6 +512,8 @@ static int misaligned_store(struct pt_regs *regs, | |||
509 | return error; | 512 | return error; |
510 | } | 513 | } |
511 | 514 | ||
515 | perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, 0, regs, address); | ||
516 | |||
512 | srcreg = (opcode >> 4) & 0x3f; | 517 | srcreg = (opcode >> 4) & 0x3f; |
513 | if (user_mode(regs)) { | 518 | if (user_mode(regs)) { |
514 | __u64 buffer; | 519 | __u64 buffer; |
@@ -583,6 +588,8 @@ static int misaligned_fpu_load(struct pt_regs *regs, | |||
583 | return error; | 588 | return error; |
584 | } | 589 | } |
585 | 590 | ||
591 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, 0, regs, address); | ||
592 | |||
586 | destreg = (opcode >> 4) & 0x3f; | 593 | destreg = (opcode >> 4) & 0x3f; |
587 | if (user_mode(regs)) { | 594 | if (user_mode(regs)) { |
588 | __u64 buffer; | 595 | __u64 buffer; |
@@ -658,6 +665,8 @@ static int misaligned_fpu_store(struct pt_regs *regs, | |||
658 | return error; | 665 | return error; |
659 | } | 666 | } |
660 | 667 | ||
668 | perf_sw_event(PERF_COUNT_SW_EMULATION_FAULTS, 1, 0, regs, address); | ||
669 | |||
661 | srcreg = (opcode >> 4) & 0x3f; | 670 | srcreg = (opcode >> 4) & 0x3f; |
662 | if (user_mode(regs)) { | 671 | if (user_mode(regs)) { |
663 | __u64 buffer; | 672 | __u64 buffer; |