diff options
Diffstat (limited to 'arch/s390/net/bpf_jit_comp.c')
-rw-r--r-- | arch/s390/net/bpf_jit_comp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c index 20c146d1251a..55423d8be580 100644 --- a/arch/s390/net/bpf_jit_comp.c +++ b/arch/s390/net/bpf_jit_comp.c | |||
@@ -384,13 +384,16 @@ static void bpf_jit_prologue(struct bpf_jit *jit) | |||
384 | } | 384 | } |
385 | /* Setup stack and backchain */ | 385 | /* Setup stack and backchain */ |
386 | if (jit->seen & SEEN_STACK) { | 386 | if (jit->seen & SEEN_STACK) { |
387 | /* lgr %bfp,%r15 (BPF frame pointer) */ | 387 | if (jit->seen & SEEN_FUNC) |
388 | EMIT4(0xb9040000, BPF_REG_FP, REG_15); | 388 | /* lgr %w1,%r15 (backchain) */ |
389 | EMIT4(0xb9040000, REG_W1, REG_15); | ||
390 | /* la %bfp,STK_160_UNUSED(%r15) (BPF frame pointer) */ | ||
391 | EMIT4_DISP(0x41000000, BPF_REG_FP, REG_15, STK_160_UNUSED); | ||
389 | /* aghi %r15,-STK_OFF */ | 392 | /* aghi %r15,-STK_OFF */ |
390 | EMIT4_IMM(0xa70b0000, REG_15, -STK_OFF); | 393 | EMIT4_IMM(0xa70b0000, REG_15, -STK_OFF); |
391 | if (jit->seen & SEEN_FUNC) | 394 | if (jit->seen & SEEN_FUNC) |
392 | /* stg %bfp,152(%r15) (backchain) */ | 395 | /* stg %w1,152(%r15) (backchain) */ |
393 | EMIT6_DISP_LH(0xe3000000, 0x0024, BPF_REG_FP, REG_0, | 396 | EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0, |
394 | REG_15, 152); | 397 | REG_15, 152); |
395 | } | 398 | } |
396 | /* | 399 | /* |