]> git.baikalelectronics.ru Git - kernel.git/commitdiff
powerpc/security: Use PPC_RAW_BLR() and PPC_RAW_NOP()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Thu, 20 May 2021 10:23:05 +0000 (10:23 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 15 Jun 2021 14:16:48 +0000 (00:16 +1000)
On the road to remove all use of PPC_INST_xxx, replace
PPC_INST_BLR by PPC_RAW_BLR(). Same for PPC_INST_NOP.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/c04f88d0e53d2122fbbe92226892a01ebc668b6a.1621506159.git.christophe.leroy@csgroup.eu
arch/powerpc/include/asm/ppc-opcode.h
arch/powerpc/kernel/security.c

index 96ca068a3f6ef0c05aea6dde271c2ca54477a1c1..de0ac79b3d5ad1f2f28dab74279972d2724fc0a4 100644 (file)
 #define PPC_INST_MFLR                  0x7c0802a6
 #define PPC_INST_ADDIS                 0x3c000000
 #define PPC_INST_ADD                   0x7c000214
-#define PPC_INST_BLR                   0x4e800020
 #define PPC_INST_DIVD                  0x7c0003d2
 #define PPC_INST_RLDICR                        0x78000004
 #define PPC_INST_ORI                   0x60000000
 #define PPC_RAW_ADDC(t, a, b)          (0x7c000014 | ___PPC_RT(t) | ___PPC_RA(a) | ___PPC_RB(b))
 #define PPC_RAW_ADDC_DOT(t, a, b)      (0x7c000014 | ___PPC_RT(t) | ___PPC_RA(a) | ___PPC_RB(b) | 0x1)
 #define PPC_RAW_NOP()                  (PPC_INST_NOP)
-#define PPC_RAW_BLR()                  (PPC_INST_BLR)
+#define PPC_RAW_BLR()                  (0x4e800020)
 #define PPC_RAW_BLRL()                 (0x4e800021)
 #define PPC_RAW_MTLR(r)                        (0x7c0803a6 | ___PPC_RT(r))
 #define PPC_RAW_MFLR(t)                        (PPC_INST_MFLR | ___PPC_RT(t))
index 0fdfcdd9d880cc9cf6e743bd11cbed8d5ad709ac..118f10d14af82c06bb2029f574a98353416534b5 100644 (file)
@@ -438,7 +438,7 @@ static void update_branch_cache_flush(void)
        site = &patch__call_kvm_flush_link_stack;
        // This controls the branch from guest_exit_cont to kvm_flush_link_stack
        if (link_stack_flush_type == BRANCH_CACHE_FLUSH_NONE) {
-               patch_instruction_site(site, ppc_inst(PPC_INST_NOP));
+               patch_instruction_site(site, ppc_inst(PPC_RAW_NOP()));
        } else {
                // Could use HW flush, but that could also flush count cache
                patch_branch_site(site, (u64)&kvm_flush_link_stack, BRANCH_SET_LINK);
@@ -447,11 +447,11 @@ static void update_branch_cache_flush(void)
 
        // Patch out the bcctr first, then nop the rest
        site = &patch__call_flush_branch_caches3;
-       patch_instruction_site(site, ppc_inst(PPC_INST_NOP));
+       patch_instruction_site(site, ppc_inst(PPC_RAW_NOP()));
        site = &patch__call_flush_branch_caches2;
-       patch_instruction_site(site, ppc_inst(PPC_INST_NOP));
+       patch_instruction_site(site, ppc_inst(PPC_RAW_NOP()));
        site = &patch__call_flush_branch_caches1;
-       patch_instruction_site(site, ppc_inst(PPC_INST_NOP));
+       patch_instruction_site(site, ppc_inst(PPC_RAW_NOP()));
 
        // This controls the branch from _switch to flush_branch_caches
        if (count_cache_flush_type == BRANCH_CACHE_FLUSH_NONE &&
@@ -474,12 +474,12 @@ static void update_branch_cache_flush(void)
                // If we just need to flush the link stack, early return
                if (count_cache_flush_type == BRANCH_CACHE_FLUSH_NONE) {
                        patch_instruction_site(&patch__flush_link_stack_return,
-                                              ppc_inst(PPC_INST_BLR));
+                                              ppc_inst(PPC_RAW_BLR()));
 
                // If we have flush instruction, early return
                } else if (count_cache_flush_type == BRANCH_CACHE_FLUSH_HW) {
                        patch_instruction_site(&patch__flush_count_cache_return,
-                                              ppc_inst(PPC_INST_BLR));
+                                              ppc_inst(PPC_RAW_BLR()));
                }
        }
 }