@@ -1260,12 +1260,9 @@ static inline void emit_push_r64(const s8 src[], struct jit_ctx *ctx)
1260
1260
1261
1261
static void build_prologue (struct jit_ctx * ctx )
1262
1262
{
1263
- const s8 r0 = bpf2a32 [BPF_REG_0 ][1 ];
1264
- const s8 r2 = bpf2a32 [BPF_REG_1 ][1 ];
1265
- const s8 r3 = bpf2a32 [BPF_REG_1 ][0 ];
1266
- const s8 r4 = bpf2a32 [BPF_REG_6 ][1 ];
1267
- const s8 fplo = bpf2a32 [BPF_REG_FP ][1 ];
1268
- const s8 fphi = bpf2a32 [BPF_REG_FP ][0 ];
1263
+ const s8 arm_r0 = bpf2a32 [BPF_REG_0 ][1 ];
1264
+ const s8 * bpf_r1 = bpf2a32 [BPF_REG_1 ];
1265
+ const s8 * bpf_fp = bpf2a32 [BPF_REG_FP ];
1269
1266
const s8 * tcc = bpf2a32 [TCALL_CNT ];
1270
1267
1271
1268
/* Save callee saved registers. */
@@ -1278,27 +1275,26 @@ static void build_prologue(struct jit_ctx *ctx)
1278
1275
emit (ARM_PUSH (CALLEE_PUSH_MASK ), ctx );
1279
1276
emit (ARM_MOV_R (ARM_FP , ARM_SP ), ctx );
1280
1277
#endif
1281
- /* Save frame pointer for later */
1282
- emit (ARM_SUB_I (ARM_IP , ARM_SP , SCRATCH_SIZE ), ctx );
1278
+ /* mov r3, #0 */
1279
+ /* sub r2, sp, #SCRATCH_SIZE */
1280
+ emit (ARM_MOV_I (bpf_r1 [0 ], 0 ), ctx );
1281
+ emit (ARM_SUB_I (bpf_r1 [1 ], ARM_SP , SCRATCH_SIZE ), ctx );
1283
1282
1284
1283
ctx -> stack_size = imm8m (STACK_SIZE );
1285
1284
1286
1285
/* Set up function call stack */
1287
1286
emit (ARM_SUB_I (ARM_SP , ARM_SP , ctx -> stack_size ), ctx );
1288
1287
1289
1288
/* Set up BPF prog stack base register */
1290
- emit_a32_mov_r (fplo , ARM_IP , ctx );
1291
- emit_a32_mov_i (fphi , 0 , ctx );
1289
+ emit_a32_mov_r64 (true, bpf_fp , bpf_r1 , ctx );
1292
1290
1293
- /* mov r4, 0 */
1294
- emit (ARM_MOV_I (r4 , 0 ), ctx );
1291
+ /* Initialize Tail Count */
1292
+ emit (ARM_MOV_I (bpf_r1 [1 ], 0 ), ctx );
1293
+ emit_a32_mov_r64 (true, tcc , bpf_r1 , ctx );
1295
1294
1296
1295
/* Move BPF_CTX to BPF_R1 */
1297
- emit (ARM_MOV_R (r3 , r4 ), ctx );
1298
- emit (ARM_MOV_R (r2 , r0 ), ctx );
1299
- /* Initialize Tail Count */
1300
- emit (ARM_STR_I (r4 , ARM_FP , EBPF_SCRATCH_TO_ARM_FP (tcc [0 ])), ctx );
1301
- emit (ARM_STR_I (r4 , ARM_FP , EBPF_SCRATCH_TO_ARM_FP (tcc [1 ])), ctx );
1296
+ emit (ARM_MOV_R (bpf_r1 [1 ], arm_r0 ), ctx );
1297
+
1302
1298
/* end of prologue */
1303
1299
}
1304
1300
0 commit comments