Module Name: src Committed By: alnsn Date: Tue Jul 8 11:30:31 UTC 2014
Modified Files: src/sys/net: bpfjit.c Log Message: Most filter programs in the kernel need 3 scratch registers. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/sys/net/bpfjit.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/bpfjit.c diff -u src/sys/net/bpfjit.c:1.21 src/sys/net/bpfjit.c:1.22 --- src/sys/net/bpfjit.c:1.21 Sat Jul 5 11:13:13 2014 +++ src/sys/net/bpfjit.c Tue Jul 8 11:30:31 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: bpfjit.c,v 1.21 2014/07/05 11:13:13 alnsn Exp $ */ +/* $NetBSD: bpfjit.c,v 1.22 2014/07/08 11:30:31 alnsn Exp $ */ /*- * Copyright (c) 2011-2014 Alexander Nasonov. @@ -31,9 +31,9 @@ #include <sys/cdefs.h> #ifdef _KERNEL -__KERNEL_RCSID(0, "$NetBSD: bpfjit.c,v 1.21 2014/07/05 11:13:13 alnsn Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bpfjit.c,v 1.22 2014/07/08 11:30:31 alnsn Exp $"); #else -__RCSID("$NetBSD: bpfjit.c,v 1.21 2014/07/05 11:13:13 alnsn Exp $"); +__RCSID("$NetBSD: bpfjit.c,v 1.22 2014/07/08 11:30:31 alnsn Exp $"); #endif #include <sys/types.h> @@ -251,6 +251,14 @@ nscratches(bpfjit_hint_t hints) { sljit_si rv = 2; +#ifdef _KERNEL + /* + * Most kernel programs load packet bytes and they generate + * m_xword/m_xhalf/m_xbyte() calls with three arguments. + */ + rv = 3; +#endif + if (hints & BJ_HINT_LDW) rv = 3; /* uses BJ_TMP2REG */