- matching a boolean bit field */
- lf_printf(file, "%d /* %s == %d */",
- bits->value == 0, original_name, bits->opcode->boolean_constant);
+ matching a boolean or constant field */
+ if (bits->opcode->is_boolean)
+ lf_printf(file, "%d /* %s == %d */",
+ bits->value == 0,
+ original_name,
+ bits->opcode->boolean_constant);
+ else if (bits->opcode->last < bits->field->last)
+ lf_printf(file, "%d /* %s == %d */",
+ (atol(entry_name + strlen(original_name) + strlen("_is_"))
+ == (bits->value << (bits->field->last - bits->opcode->last))),
+ original_name,
+ (bits->value << (bits->field->last - bits->opcode->last)));
+ else
+ lf_printf(file, "%d /* %s == %d */",
+ (atol(entry_name + strlen(original_name) + strlen("_is_"))
+ == bits->value),
+ original_name,
+ bits->value);