]> git.sur5r.net Git - u-boot/blobdiff - arch/x86/lib/tables.c
x86: baytrail: Issue full system reset in reset_cpu()
[u-boot] / arch / x86 / lib / tables.c
index 8031201a49c2ce2db0b7a8a65cd1a7365d4f21f2..14b15cf38917d2519730b5dfb7558b60156b19c9 100644 (file)
@@ -6,7 +6,10 @@
 
 #include <common.h>
 #include <asm/sfi.h>
+#include <asm/mpspec.h>
+#include <asm/smbios.h>
 #include <asm/tables.h>
+#include <asm/acpi_table.h>
 
 u8 table_compute_checksum(void *v, int len)
 {
@@ -20,6 +23,20 @@ u8 table_compute_checksum(void *v, int len)
        return checksum;
 }
 
+void table_fill_string(char *dest, const char *src, size_t n, char pad)
+{
+       int start, len;
+       int i;
+
+       strncpy(dest, src, n);
+
+       /* Fill the remaining bytes with pad */
+       len = strlen(src);
+       start = len < n ? len : n;
+       for (i = start; i < n; i++)
+               dest[i] = pad;
+}
+
 void write_tables(void)
 {
        u32 __maybe_unused rom_table_end = ROM_TABLE_ADDR;
@@ -32,4 +49,16 @@ void write_tables(void)
        rom_table_end = write_sfi_table(rom_table_end);
        rom_table_end = ALIGN(rom_table_end, 1024);
 #endif
+#ifdef CONFIG_GENERATE_MP_TABLE
+       rom_table_end = write_mp_table(rom_table_end);
+       rom_table_end = ALIGN(rom_table_end, 1024);
+#endif
+#ifdef CONFIG_GENERATE_ACPI_TABLE
+       rom_table_end = write_acpi_tables(rom_table_end);
+       rom_table_end = ALIGN(rom_table_end, 1024);
+#endif
+#ifdef CONFIG_GENERATE_SMBIOS_TABLE
+       rom_table_end = write_smbios_table(rom_table_end);
+       rom_table_end = ALIGN(rom_table_end, 1024);
+#endif
 }