|
@@ -6,10 +6,12 @@
|
|
#define SAVE_SZ 176
|
|
#define SAVE_SZ 176
|
|
#define SCRATCH_OFF STACK_BIAS + 128
|
|
#define SCRATCH_OFF STACK_BIAS + 128
|
|
#define BE_PTR(label) be,pn %xcc, label
|
|
#define BE_PTR(label) be,pn %xcc, label
|
|
|
|
+#define SIGN_EXTEND(reg) sra reg, 0, reg
|
|
#else
|
|
#else
|
|
#define SAVE_SZ 96
|
|
#define SAVE_SZ 96
|
|
#define SCRATCH_OFF 72
|
|
#define SCRATCH_OFF 72
|
|
#define BE_PTR(label) be label
|
|
#define BE_PTR(label) be label
|
|
|
|
+#define SIGN_EXTEND(reg)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#define SKF_MAX_NEG_OFF (-0x200000) /* SKF_LL_OFF from filter.h */
|
|
#define SKF_MAX_NEG_OFF (-0x200000) /* SKF_LL_OFF from filter.h */
|
|
@@ -135,6 +137,7 @@ bpf_slow_path_byte_msh:
|
|
save %sp, -SAVE_SZ, %sp; \
|
|
save %sp, -SAVE_SZ, %sp; \
|
|
mov %i0, %o0; \
|
|
mov %i0, %o0; \
|
|
mov r_OFF, %o1; \
|
|
mov r_OFF, %o1; \
|
|
|
|
+ SIGN_EXTEND(%o1); \
|
|
call bpf_internal_load_pointer_neg_helper; \
|
|
call bpf_internal_load_pointer_neg_helper; \
|
|
mov (LEN), %o2; \
|
|
mov (LEN), %o2; \
|
|
mov %o0, r_TMP; \
|
|
mov %o0, r_TMP; \
|