]> xenbits.xensource.com Git - osstest/seabios.git/commitdiff
smbios: smbios_21_setup_entry_point() function
authorEduardo Habkost <ehabkost@redhat.com>
Thu, 10 Dec 2020 18:52:14 +0000 (13:52 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 18 Dec 2021 16:39:13 +0000 (11:39 -0500)
Extract the code specific for building the SMBIOS 2.1 entry point
from smbios_romfile_setup() to a new
smbios_21_setup_entry_point() function.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
src/fw/biostables.c

index f0aa7ed3d75c6d928258b8fc2a99507b5f345690..559a5867a96394d3c3ae45006e559577d257088c 100644 (file)
@@ -523,6 +523,25 @@ smbios_build_tables(struct romfile_s *f_tables,
     return 1;
 }
 
+static int
+smbios_21_setup_entry_point(struct romfile_s *f_tables,
+                            struct smbios_21_entry_point *ep)
+{
+    if (!smbios_build_tables(f_tables,
+                             &ep->structure_table_address,
+                             &ep->structure_table_length,
+                             &ep->max_structure_size,
+                             &ep->number_of_structures))
+        return 0;
+
+    /* finalize entry point */
+    ep->checksum -= checksum(ep, 0x10);
+    ep->intermediate_checksum -= checksum((void *)ep + 0x10, ep->length - 0x10);
+
+    copy_smbios_21(ep);
+    return 1;
+}
+
 static int
 smbios_romfile_setup(void)
 {
@@ -535,19 +554,7 @@ smbios_romfile_setup(void)
 
     f_anchor->copy(f_anchor, &ep, f_anchor->size);
 
-    if (!smbios_build_tables(f_tables,
-                             &ep.structure_table_address,
-                             &ep.structure_table_length,
-                             &ep.max_structure_size,
-                             &ep.number_of_structures))
-        return 0;
-
-    /* finalize entry point */
-    ep.checksum -= checksum(&ep, 0x10);
-    ep.intermediate_checksum -= checksum((void *)&ep + 0x10, ep.length - 0x10);
-
-    copy_smbios_21(&ep);
-    return 1;
+    return smbios_21_setup_entry_point(f_tables, &ep);
 }
 
 void