summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/libpayload/drivers/options.c17
-rw-r--r--payloads/libpayload/include/libpayload.h3
2 files changed, 19 insertions, 1 deletions
diff --git a/payloads/libpayload/drivers/options.c b/payloads/libpayload/drivers/options.c
index 61e6cc565f..36d8a9b5b0 100644
--- a/payloads/libpayload/drivers/options.c
+++ b/payloads/libpayload/drivers/options.c
@@ -30,11 +30,28 @@
#include <libpayload.h>
#include <coreboot_tables.h>
+u8 *mem_accessor_base;
+
+static u8 mem_read(u8 reg)
+{
+ return mem_accessor_base[reg];
+}
+
+static void mem_write(u8 val, u8 reg)
+{
+ mem_accessor_base[reg] = val;
+}
+
struct nvram_accessor *use_nvram = &(struct nvram_accessor) {
nvram_read,
nvram_write
};
+struct nvram_accessor *use_mem = &(struct nvram_accessor) {
+ mem_read,
+ mem_write
+};
+
struct cb_cmos_option_table *get_system_option_table(void)
{
return phys_to_virt(lib_sysinfo.option_table);
diff --git a/payloads/libpayload/include/libpayload.h b/payloads/libpayload/include/libpayload.h
index 91156e53df..308d95c667 100644
--- a/payloads/libpayload/include/libpayload.h
+++ b/payloads/libpayload/include/libpayload.h
@@ -199,7 +199,8 @@ struct nvram_accessor {
void (*write)(u8 val, u8 reg);
};
-extern struct nvram_accessor *use_nvram;
+extern u8 *mem_accessor_base;
+extern struct nvram_accessor *use_nvram, *use_mem;
struct cb_cmos_option_table *get_system_option_table(void);
void fix_options_checksum_with(const struct nvram_accessor *nvram);