diff --git a/util/nvramtool/cmos_lowlevel.c b/util/nvramtool/cmos_lowlevel.c
index 9f44a0b..8e19f51 100644
--- a/util/nvramtool/cmos_lowlevel.c
+++ b/util/nvramtool/cmos_lowlevel.c
@@ -37,20 +37,36 @@
 #include "cmos_lowlevel.h"
 
 /* Hardware Abstraction Layer: lowlevel byte-wise write access */
+
 typedef struct {
 	void (*init)(void* data);
 	unsigned char (*read)(unsigned addr);
 	void (*write)(unsigned addr, unsigned char value);
+	void (*set_iopl)(int level);
 } cmos_access_t;
 
 static void cmos_hal_init(void* data);
 static unsigned char cmos_hal_read(unsigned addr);
 static void cmos_hal_write(unsigned addr, unsigned char value);
+static void cmos_set_iopl(int level);
 
 static cmos_access_t cmos_hal = {
 	.init = cmos_hal_init,
 	.read = cmos_hal_read,
-	.write = cmos_hal_write
+	.write = cmos_hal_write,
+	.set_iopl = cmos_set_iopl,
+};
+
+static void mem_hal_init(void* data);
+static unsigned char mem_hal_read(unsigned addr);
+static void mem_hal_write(unsigned addr, unsigned char value);
+static void mem_set_iopl(int level);
+
+static cmos_access_t memory_hal = {
+	.init = mem_hal_init,
+	.read = mem_hal_read,
+	.write = mem_hal_write,
+	.set_iopl = mem_set_iopl,
 };
 
 static cmos_access_t *current_access = &cmos_hal;
@@ -96,6 +112,37 @@
 	OUTB(value, port_1);
 }
 
+static unsigned char* mem_hal_data = (unsigned char*)-1;
+static void mem_hal_init(void *data)
+{
+	mem_hal_data = data;
+}
+
+static unsigned char mem_hal_read(unsigned index)
+{
+	assert(mem_hal_data != (unsigned char*)-1);
+	return mem_hal_data[index];
+}
+
+static void mem_hal_write(unsigned index, unsigned char value)
+{
+	assert(mem_hal_data != (unsigned char*)-1);
+	mem_hal_data[index] = value;
+}
+
+void select_hal(hal_t hal, void *data)
+{
+	switch(hal) {
+		case HAL_CMOS:
+			current_access = &cmos_hal;
+			break;
+		case HAL_MEMORY:
+			current_access = &memory_hal;
+			break;
+	}
+	current_access->init(data);
+}
+
 /* Bit-level access */
 typedef struct {
 	unsigned byte_index;
@@ -303,6 +350,11 @@
  ****************************************************************************/
 void set_iopl(int level)
 {
+	current_access->set_iopl(level);
+}
+
+static void cmos_set_iopl(int level)
+{
 #if defined(__FreeBSD__)
 	static int io_fd = -1;
 #endif
@@ -333,6 +385,10 @@
 #endif
 }
 
+static void mem_set_iopl(__attribute__ ((unused)) int level)
+{
+}
+
 /****************************************************************************
  * verify_cmos_op
  *
