]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
MIPS: Watch: Avoid duplication of bits in mips_install_watch_registers.
authorMatt Redfearn <matt.redfearn@mips.com>
Tue, 2 Jan 2018 11:31:21 +0000 (11:31 +0000)
committerJames Hogan <jhogan@kernel.org>
Tue, 23 Jan 2018 15:45:34 +0000 (15:45 +0000)
Currently the bits to be set in the watchhi register in addition to that
requested by the user is defined inline for each register. To avoid
this, define the bits once and or that in for each register.

Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
Acked-by: David Daney <david.daney@cavium.com>
Reviewed-by: James Hogan <jhogan@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/18157/
Signed-off-by: James Hogan <jhogan@kernel.org>
arch/mips/kernel/watch.c

index 19fcab7348b16d9ab8538fdc8b83c342ac7a8486..329d2209521da014480e48fa6a32e75678e20c0f 100644 (file)
 void mips_install_watch_registers(struct task_struct *t)
 {
        struct mips3264_watch_reg_state *watches = &t->thread.watch.mips3264;
+       unsigned int watchhi = MIPS_WATCHHI_G |         /* Trap all ASIDs */
+                              MIPS_WATCHHI_IRW;        /* Clear result bits */
+
        switch (current_cpu_data.watch_reg_use_cnt) {
        default:
                BUG();
        case 4:
                write_c0_watchlo3(watches->watchlo[3]);
-               /* Write 1 to the I, R, and W bits to clear them, and
-                  1 to G so all ASIDs are trapped. */
-               write_c0_watchhi3(MIPS_WATCHHI_G | MIPS_WATCHHI_IRW |
-                                 watches->watchhi[3]);
+               write_c0_watchhi3(watchhi | watches->watchhi[3]);
        case 3:
                write_c0_watchlo2(watches->watchlo[2]);
-               write_c0_watchhi2(MIPS_WATCHHI_G | MIPS_WATCHHI_IRW |
-                                 watches->watchhi[2]);
+               write_c0_watchhi2(watchhi | watches->watchhi[2]);
        case 2:
                write_c0_watchlo1(watches->watchlo[1]);
-               write_c0_watchhi1(MIPS_WATCHHI_G | MIPS_WATCHHI_IRW |
-                                 watches->watchhi[1]);
+               write_c0_watchhi1(watchhi | watches->watchhi[1]);
        case 1:
                write_c0_watchlo0(watches->watchlo[0]);
-               write_c0_watchhi0(MIPS_WATCHHI_G | MIPS_WATCHHI_IRW |
-                                 watches->watchhi[0]);
+               write_c0_watchhi0(watchhi | watches->watchhi[0]);
        }
 }