acpigen: Add option for reserved bits in Field

Add an option for unused/reserved bits in a Field definition,
allowing for declarations that do not start at bit 0:

Field (UART, AnyAcc, NoLock, Preserve)
{
    , 7,  /* RESERVED */
    BITF, /* Used bit */
}

These just use byte 0 instead of a name.

Change-Id: I86b54685dbdebacb0834173857c9341ea9fa9a46
Signed-off-by: Duncan Laurie <dlaurie@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46254
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c
index 5b45ebd..a3beb10 100644
--- a/src/acpi/acpigen.c
+++ b/src/acpi/acpigen.c
@@ -505,6 +505,12 @@
 	acpigen_write_field_length(size);
 }
 
+static void acpigen_write_field_reserved(uint32_t size)
+{
+	acpigen_emit_byte(0);
+	acpigen_write_field_length(size);
+}
+
 /*
  * Generate ACPI AML code for Field
  * Arg0: region name
@@ -515,6 +521,7 @@
  * struct fieldlist l[] = {
  *	FIELDLIST_OFFSET(0x84),
  *	FIELDLIST_NAMESTR("PMCS", 2),
+ *	FIELDLIST_RESERVED(6),
  *	};
  * acpigen_write_field("UART", l, ARRAY_SIZE(l), FIELD_ANYACC | FIELD_NOLOCK |
  *								FIELD_PRESERVE);
@@ -522,7 +529,8 @@
  * Field (UART, AnyAcc, NoLock, Preserve)
  *	{
  *		Offset (0x84),
- *		PMCS,   2
+ *		PMCS,   2,
+ *              , 6,
  *	}
  */
 void acpigen_write_field(const char *name, const struct fieldlist *l, size_t count,
@@ -546,6 +554,10 @@
 			acpigen_write_field_name(l[i].name, l[i].bits);
 			current_bit_pos += l[i].bits;
 			break;
+		case RESERVED:
+			acpigen_write_field_reserved(l[i].bits);
+			current_bit_pos += l[i].bits;
+			break;
 		case OFFSET:
 			acpigen_write_field_offset(l[i].bits, current_bit_pos);
 			current_bit_pos = l[i].bits;