acpigen: Use implicit length patching in acpigen_write_resourcetemplate_footer

Change-Id: Ic177720b074fed13a17454dcb6765ac298365624
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-on: http://review.coreboot.org/7366
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
diff --git a/src/arch/x86/boot/acpigen.c b/src/arch/x86/boot/acpigen.c
index f714d59..cc9f9abc 100644
--- a/src/arch/x86/boot/acpigen.c
+++ b/src/arch/x86/boot/acpigen.c
@@ -382,13 +382,13 @@
 	/* ControlRegister */
 	rlen = acpigen_write_resourcetemplate_header();
 	rlen += acpigen_write_register(&addr);
-	len += acpigen_write_resourcetemplate_footer(rlen);
+	len += acpigen_write_resourcetemplate_footer();
 	len += rlen;
 
 	/* StatusRegister */
 	rlen = acpigen_write_resourcetemplate_header();
 	rlen += acpigen_write_register(&addr);
-	len += acpigen_write_resourcetemplate_footer(rlen);
+	len += acpigen_write_resourcetemplate_footer();
 	len += rlen;
 
 	acpigen_patch_len(len - 1);
@@ -535,7 +535,7 @@
 	acpigen_write_register(&cstate->resource);
 	end = acpigen_get_current();
 	len += end - start;
-	len += acpigen_write_resourcetemplate_footer(len);
+	len += acpigen_write_resourcetemplate_footer();
 	len += len0;
 	len += acpigen_write_dword(cstate->ctype);
 	len += acpigen_write_dword(cstate->latency);
@@ -713,20 +713,24 @@
 	return len;
 }
 
-int acpigen_write_resourcetemplate_footer(int len)
+int acpigen_write_resourcetemplate_footer(void)
 {
 	char *p = len_stack[--ltop];
+	int len;
 	/*
 	 * end tag (acpi 4.0 Section 6.4.2.8)
 	 * 0x79 <checksum>
 	 * 0x00 is treated as a good checksum according to the spec
 	 * and is what iasl generates.
 	 */
-	len += acpigen_emit_byte(0x79);
-	len += acpigen_emit_byte(0x00);
+	acpigen_emit_byte(0x79);
+	acpigen_emit_byte(0x00);
+
+     	len = gencurrent - p;
+
 	/* patch len word */
-	p[0] = (len-6) & 0xff;
-	p[1] = ((len-6) >> 8) & 0xff;
+	p[0] = len & 0xff;
+	p[1] = (len >> 8) & 0xff;
 	/* patch len field */
 	acpigen_patch_len(len-1);
 	return 2;
@@ -773,7 +777,7 @@
 
 	end = acpigen_get_current();
 	len += end-start;
-	len += acpigen_write_resourcetemplate_footer(len);
+	len += acpigen_write_resourcetemplate_footer();
 	return len;
 }