Browse Source

Added generic function for calculating ACPI table checksum

tags/v0.9.3
Michael Brown 17 years ago
parent
commit
22511400c7
2 changed files with 42 additions and 0 deletions
  1. 40
    0
      src/core/acpi.c
  2. 2
    0
      src/include/gpxe/acpi.h

+ 40
- 0
src/core/acpi.c View File

@@ -0,0 +1,40 @@
1
+/*
2
+ * Copyright (C) 2006 Michael Brown <mbrown@fensystems.co.uk>.
3
+ *
4
+ * This program is free software; you can redistribute it and/or
5
+ * modify it under the terms of the GNU General Public License as
6
+ * published by the Free Software Foundation; either version 2 of the
7
+ * License, or any later version.
8
+ *
9
+ * This program is distributed in the hope that it will be useful, but
10
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
+ * General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with this program; if not, write to the Free Software
16
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
+ */
18
+
19
+#include <gpxe/acpi.h>
20
+
21
+/** @file
22
+ *
23
+ * ACPI support functions
24
+ *
25
+ */
26
+
27
+/**
28
+ * Fix up ACPI table checksum
29
+ *
30
+ * @v acpi		ACPI table header
31
+ */
32
+void acpi_fix_checksum ( struct acpi_description_header *acpi ) {
33
+	unsigned int i = 0;
34
+	uint8_t sum = 0;
35
+
36
+	for ( i = 0 ; i < acpi->length ; i++ ) {
37
+		sum += *( ( ( uint8_t * ) acpi ) + i );
38
+	}
39
+	acpi->checksum -= sum;
40
+}

+ 2
- 0
src/include/gpxe/acpi.h View File

@@ -36,4 +36,6 @@ struct acpi_description_header {
36 36
 	uint32_t asl_compiler_revision;
37 37
 } __attribute__ (( packed ));
38 38
 
39
+extern void acpi_fix_checksum ( struct acpi_description_header *acpi );
40
+
39 41
 #endif /* _GPXE_ACPI_H */

Loading…
Cancel
Save