/* We only have to reload LM0 if the key is not at start of stack */
lm_off = nfp_prog->stack_frame_depth;
- lm_off += meta->arg2.reg.var_off.value + meta->arg2.reg.off;
+ lm_off += meta->arg2.reg.var_off.value;
load_lm_ptr = meta->arg2.var_off || lm_off;
/* Set LM0 to start of key */
}
if (meta->ptr.type == PTR_TO_STACK)
- return mem_ldx_stack(nfp_prog, meta, size,
- meta->ptr.off + meta->ptr.var_off.value);
+ return mem_ldx_stack(nfp_prog, meta, size, meta->ptr.var_off.value);
if (meta->ptr.type == PTR_TO_MAP_VALUE)
return mem_ldx_emem(nfp_prog, meta, size);
return mem_stx_data(nfp_prog, meta, size);
if (meta->ptr.type == PTR_TO_STACK)
- return mem_stx_stack(nfp_prog, meta, size,
- meta->ptr.off + meta->ptr.var_off.value);
+ return mem_stx_stack(nfp_prog, meta, size, meta->ptr.var_off.value);
return -EOPNOTSUPP;
}
/* Canonicalize the offsets. Turn all of them against the original
* base register.
*/
- head_ld_off = head_ld_meta->insn.off + head_ld_meta->ptr.off;
- head_st_off = head_st_meta->insn.off + head_st_meta->ptr.off;
- ld_off = ld->off + head_ld_meta->ptr.off;
+ head_ld_off = head_ld_meta->insn.off + head_ld_meta->ptr.var_off.value;
+ head_st_off = head_st_meta->insn.off + head_st_meta->ptr.var_off.value;
+ ld_off = ld->off + head_ld_meta->ptr.var_off.value;
/* Ascending order cross. */
if (ld_off > head_ld_off &&
* support this.
*/
if (meta->ptr.id == range_ptr_id &&
- meta->ptr.off == range_ptr_off) {
+ meta->ptr.var_off.value == range_ptr_off) {
s16 new_start = range_start;
s16 end, off = insn->off;
s16 new_end = range_end;
range_node = meta;
range_node->pkt_cache.do_init = true;
range_ptr_id = range_node->ptr.id;
- range_ptr_off = range_node->ptr.off;
+ range_ptr_off = range_node->ptr.var_off.value;
range_start = insn->off;
range_end = insn->off + BPF_LDST_BYTES(insn);
}
offmap = map_to_offmap(reg1->map_ptr);
nfp_map = offmap->dev_priv;
- off = reg3->off + reg3->var_off.value;
+ off = reg3->var_off.value;
for (i = 0; i < offmap->map.value_size; i++) {
struct bpf_stack_state *stack_entry;
return false;
}
- off = reg->var_off.value + reg->off;
+ off = reg->var_off.value;
if (-off % 4) {
pr_vlog(env, "%s: unaligned stack pointer %lld\n", fname, -off);
return false;
if (!old_arg)
return true;
- old_off = old_arg->reg.var_off.value + old_arg->reg.off;
+ old_off = old_arg->reg.var_off.value;
old_arg->var_off |= off != old_off;
return true;
if (meta->ptr.type == NOT_INIT)
return 0;
- old_off = meta->ptr.off + meta->ptr.var_off.value;
- new_off = reg->off + reg->var_off.value;
+ old_off = meta->ptr.var_off.value;
+ new_off = reg->var_off.value;
meta->ptr_not_const |= old_off != new_off;
return -EOPNOTSUPP;
}
- off = reg->var_off.value + meta->insn.off + reg->off;
+ off = reg->var_off.value + meta->insn.off;
size = BPF_LDST_BYTES(&meta->insn);
offmap = map_to_offmap(reg->map_ptr);
nfp_map = offmap->dev_priv;