|
|
@@ -37,7 +37,20 @@ enum {
|
|
|
#define TC_ACT_QUEUED 5
|
|
|
#define TC_ACT_REPEAT 6
|
|
|
#define TC_ACT_REDIRECT 7
|
|
|
-#define TC_ACT_JUMP 0x10000000
|
|
|
+
|
|
|
+/* There is a special kind of actions called "extended actions",
|
|
|
+ * which need a value parameter. These have a local opcode located in
|
|
|
+ * the highest nibble, starting from 1. The rest of the bits
|
|
|
+ * are used to carry the value. These two parts together make
|
|
|
+ * a combined opcode.
|
|
|
+ */
|
|
|
+#define __TC_ACT_EXT_SHIFT 28
|
|
|
+#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
|
|
|
+#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
|
|
|
+#define TC_ACT_EXT_CMP(combined, opcode) \
|
|
|
+ (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode)
|
|
|
+
|
|
|
+#define TC_ACT_JUMP __TC_ACT_EXT(1)
|
|
|
|
|
|
/* Action type identifiers*/
|
|
|
enum {
|