powerpc/bpf: Move common helpers into bpf_jit.h
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Mon, 22 Mar 2021 16:37:48 +0000 (16:37 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 3 Apr 2021 10:22:20 +0000 (21:22 +1100)
Move functions bpf_flush_icache(), bpf_is_seen_register() and
bpf_set_seen_register() in order to reuse them in future
bpf_jit_comp32.c

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/28e8d5a75e64807d7e9d39a4b52658755e259f8c.1616430991.git.christophe.leroy@csgroup.eu
arch/powerpc/net/bpf_jit.h
arch/powerpc/net/bpf_jit64.h
arch/powerpc/net/bpf_jit_comp64.c

index d0a67a1..b8fa690 100644 (file)
@@ -108,6 +108,41 @@ static inline bool is_nearbranch(int offset)
 #define COND_LT                (CR0_LT | COND_CMP_TRUE)
 #define COND_LE                (CR0_GT | COND_CMP_FALSE)
 
+#define SEEN_FUNC      0x1000 /* might call external helpers */
+#define SEEN_STACK     0x2000 /* uses BPF stack */
+#define SEEN_TAILCALL  0x4000 /* uses tail calls */
+
+struct codegen_context {
+       /*
+        * This is used to track register usage as well
+        * as calls to external helpers.
+        * - register usage is tracked with corresponding
+        *   bits (r3-r10 and r27-r31)
+        * - rest of the bits can be used to track other
+        *   things -- for now, we use bits 16 to 23
+        *   encoded in SEEN_* macros above
+        */
+       unsigned int seen;
+       unsigned int idx;
+       unsigned int stack_size;
+};
+
+static inline void bpf_flush_icache(void *start, void *end)
+{
+       smp_wmb();      /* smp write barrier */
+       flush_icache_range((unsigned long)start, (unsigned long)end);
+}
+
+static inline bool bpf_is_seen_register(struct codegen_context *ctx, int i)
+{
+       return ctx->seen & (1 << (31 - i));
+}
+
+static inline void bpf_set_seen_register(struct codegen_context *ctx, int i)
+{
+       ctx->seen |= 1 << (31 - i);
+}
+
 #endif
 
 #endif
index 2e33c66..b05f2e6 100644 (file)
@@ -86,25 +86,6 @@ static const int b2p[] = {
                                } while(0)
 #define PPC_BPF_STLU(r, base, i) do { EMIT(PPC_RAW_STDU(r, base, i)); } while(0)
 
-#define SEEN_FUNC      0x1000 /* might call external helpers */
-#define SEEN_STACK     0x2000 /* uses BPF stack */
-#define SEEN_TAILCALL  0x4000 /* uses tail calls */
-
-struct codegen_context {
-       /*
-        * This is used to track register usage as well
-        * as calls to external helpers.
-        * - register usage is tracked with corresponding
-        *   bits (r3-r10 and r27-r31)
-        * - rest of the bits can be used to track other
-        *   things -- for now, we use bits 16 to 23
-        *   encoded in SEEN_* macros above
-        */
-       unsigned int seen;
-       unsigned int idx;
-       unsigned int stack_size;
-};
-
 #endif /* !__ASSEMBLY__ */
 
 #endif
index 51b3f44..111451b 100644 (file)
@@ -23,22 +23,6 @@ static void bpf_jit_fill_ill_insns(void *area, unsigned int size)
        memset32(area, BREAKPOINT_INSTRUCTION, size/4);
 }
 
-static inline void bpf_flush_icache(void *start, void *end)
-{
-       smp_wmb();
-       flush_icache_range((unsigned long)start, (unsigned long)end);
-}
-
-static inline bool bpf_is_seen_register(struct codegen_context *ctx, int i)
-{
-       return ctx->seen & (1 << (31 - i));
-}
-
-static inline void bpf_set_seen_register(struct codegen_context *ctx, int i)
-{
-       ctx->seen |= 1 << (31 - i);
-}
-
 static inline bool bpf_has_stack_frame(struct codegen_context *ctx)
 {
        /*