-#define vx_flags(m,f) __vx_flags(vx_current_flags(),(m),(f))
+/* generic flag merging */
+
+#define vx_check_flags(v,m,f) (((v) & (m)) ^ (f))
+
+#define vx_mask_flags(v,f,m) (((v) & ~(m)) | ((f) & (m)))
+
+#define vx_mask_mask(v,f,m) (((v) & ~(m)) | ((v) & (f) & (m)))
+
+
+/* context flags */
+
+#define __vx_flags(v) ((v) ? (v)->vx_flags : 0)
+
+#define vx_current_flags() __vx_flags(current->vx_info)
+
+#define vx_info_flags(v,m,f) \
+ vx_check_flags(__vx_flags(v),(m),(f))