Files
lbmk/config/seabios/default/patches/0001-romfile-implement-a-generic-loader.patch
T
Leah Rowe a08b8d94fc seabios: bump to rev 9029a010, 4 March 2025
This brings in the following improvements from upstream:

* 9029a010 kconfig: fix the check-lxdialog.sh to work with gcc 14+
* 8863cbbd ahci: add controller reset
* df9dd418 update pci_pad_mem64 handling
* a4fc1845 add romfile_loadbool()
* a2725e28 drop acpi tables and hex includes
* 35aa9a72 drop obsolete acpi table code
* 1b598a1d usb-hid: Support multiple USB HID devices by storing them in a linked list

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-30 01:52:56 +01:00

87 lines
2.8 KiB
Diff

From 9509e5a959d884879015ca2388a1cee4d32662f2 Mon Sep 17 00:00:00 2001
From: Riku Viitanen <riku.viitanen@protonmail.com>
Date: Sat, 10 Feb 2024 21:23:33 +0200
Subject: [PATCH 1/3] romfile: implement a generic loader
romfile_loadfile_g:
Based on romfile_loadfile but more flexible. User has to supply pointer
to a malloc function and the number of trailing padding bytes. Thus, any
memory region may be used.
romfile_loadfile:
It is now a wrapper around romfile_loadfile_g. Functionality is the same.
Signed-off-by: Riku Viitanen <riku.viitanen@protonmail.com>
---
src/romfile.c | 25 ++++++++++++++++++++-----
src/romfile.h | 2 ++
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/romfile.c b/src/romfile.c
index 8072a915..f4d5f82d 100644
--- a/src/romfile.c
+++ b/src/romfile.c
@@ -47,10 +47,12 @@ romfile_find(const char *name)
return __romfile_findprefix(name, strlen(name) + 1, NULL);
}
-// Helper function to find, malloc_tmphigh, and copy a romfile. This
-// function adds a trailing zero to the malloc'd copy.
+// Generic function to find romfile, malloc (using provided function
+// pointer), and copy a romfile. add_len specifies how many additional
+// trailing bytes to reserve. The extra bytes will not be initialised.
void *
-romfile_loadfile(const char *name, int *psize)
+romfile_loadfile_g(const char *name, int *psize,
+ void *(*malloc_fn)(u32), int add_len)
{
struct romfile_s *file = romfile_find(name);
if (!file)
@@ -60,7 +62,7 @@ romfile_loadfile(const char *name, int *psize)
if (!filesize)
return NULL;
- char *data = malloc_tmphigh(filesize+1);
+ char *data = malloc_fn(filesize+add_len);
if (!data) {
warn_noalloc();
return NULL;
@@ -74,7 +76,20 @@ romfile_loadfile(const char *name, int *psize)
}
if (psize)
*psize = filesize;
- data[filesize] = '\0';
+
+ return data;
+}
+
+// Helper function to find, malloc_tmphigh, and copy a romfile. This
+// function adds a trailing zero to the malloc'd copy.
+void *
+romfile_loadfile(const char *name, int *psize)
+{
+ char *data = romfile_loadfile_g(name, psize, &malloc_tmphigh, 1);
+ if (!data)
+ return NULL;
+
+ data[*psize] = '\0';
return data;
}
diff --git a/src/romfile.h b/src/romfile.h
index ae2f4ac7..f62b2fee 100644
--- a/src/romfile.h
+++ b/src/romfile.h
@@ -13,6 +13,8 @@ struct romfile_s {
void romfile_add(struct romfile_s *file);
struct romfile_s *romfile_findprefix(const char *prefix, struct romfile_s *prev);
struct romfile_s *romfile_find(const char *name);
+void *romfile_loadfile_g(const char *name, int *psize,
+ void *(*malloc_fn)(u32), int add_len);
void *romfile_loadfile(const char *name, int *psize);
u64 romfile_loadint(const char *name, u64 defval);
u32 romfile_loadbool(const char *name, u32 defval);
--
2.39.5