break;
        }
        /* tail call */
-       case BPF_JMP | BPF_CALL | BPF_X:
+       case BPF_JMP | BPF_TAIL_CALL:
                if (emit_bpf_tail_call(ctx))
                        return -EFAULT;
                break;
 
                /*
                 * Tail call
                 */
-               case BPF_JMP | BPF_CALL | BPF_X:
+               case BPF_JMP | BPF_TAIL_CALL:
                        ctx->seen |= SEEN_TAILCALL;
                        bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
                        break;
 
                }
                break;
        }
-       case BPF_JMP | BPF_CALL | BPF_X:
+       case BPF_JMP | BPF_TAIL_CALL:
                /*
                 * Implicit input:
                 *  B1: pointer to ctx
 
        }
 
        /* tail call */
-       case BPF_JMP | BPF_CALL |BPF_X:
+       case BPF_JMP | BPF_TAIL_CALL:
                emit_tail_call(ctx);
                break;
 
 
                        }
                        break;
 
-               case BPF_JMP | BPF_CALL | BPF_X:
+               case BPF_JMP | BPF_TAIL_CALL:
                        emit_bpf_tail_call(&prog);
                        break;
 
 
 #define BPF_REG_AX             MAX_BPF_REG
 #define MAX_BPF_JIT_REG                (MAX_BPF_REG + 1)
 
+/* unused opcode to mark special call to bpf_tail_call() helper */
+#define BPF_TAIL_CALL  0xf0
+
 /* As per nm, we expose JITed images as text (code) section for
  * kallsyms. That way, tools like perf can find it to match
  * addresses.
 
                [BPF_ALU64 | BPF_NEG] = &&ALU64_NEG,
                /* Call instruction */
                [BPF_JMP | BPF_CALL] = &&JMP_CALL,
-               [BPF_JMP | BPF_CALL | BPF_X] = &&JMP_TAIL_CALL,
+               [BPF_JMP | BPF_TAIL_CALL] = &&JMP_TAIL_CALL,
                /* Jumps */
                [BPF_JMP | BPF_JA] = &&JMP_JA,
                [BPF_JMP | BPF_JEQ | BPF_X] = &&JMP_JEQ_X,
 
                         * that doesn't support bpf_tail_call yet
                         */
                        insn->imm = 0;
-                       insn->code |= BPF_X;
+                       insn->code = BPF_JMP | BPF_TAIL_CALL;
                        continue;
                }