diff --git a/src/biosvar.h b/src/biosvar.h
index 35cd181..412afd5 100644
--- a/src/biosvar.h
+++ b/src/biosvar.h
@@ -223,7 +223,6 @@
     u8 other2[0xC4];
 
     // 0x121 - Begin custom storage.
-    u8 ps2ctr;
     struct usbkeyinfo usbkey_last;
 
     // El Torito Emulation data
diff --git a/src/ps2port.c b/src/ps2port.c
index 4b27b7a..15bce8e 100644
--- a/src/ps2port.c
+++ b/src/ps2port.c
@@ -8,7 +8,7 @@
 #include "ioport.h" // inb
 #include "util.h" // dprintf
 #include "paravirt.h" // romfile_loadint
-#include "biosvar.h" // GET_EBDA
+#include "biosvar.h" // GET_LOW
 #include "ps2port.h" // ps2_kbd_command
 #include "pic.h" // eoi_pic1
 
@@ -208,6 +208,8 @@
     return 0;
 }
 
+u8 Ps2ctr VARLOW;
+
 static int
 __ps2_command(int aux, int command, u8 *param)
 {
@@ -216,7 +218,7 @@
     int send = (command >> 12) & 0xf;
 
     // Disable interrupts and keyboard/mouse.
-    u8 ps2ctr = GET_EBDA(ps2ctr);
+    u8 ps2ctr = GET_LOW(Ps2ctr);
     u8 newctr = ((ps2ctr | I8042_CTR_AUXDIS | I8042_CTR_KBDDIS)
                  & ~(I8042_CTR_KBDINT|I8042_CTR_AUXINT));
     dprintf(6, "i8042 ctr old=%x new=%x\n", ps2ctr, newctr);
@@ -337,13 +339,12 @@
 
     // Update ps2ctr for mouse enable/disable.
     if (command == PSMOUSE_CMD_ENABLE || command == PSMOUSE_CMD_DISABLE) {
-        u16 ebda_seg = get_ebda_seg();
-        u8 ps2ctr = GET_EBDA2(ebda_seg, ps2ctr);
+        u8 ps2ctr = GET_LOW(Ps2ctr);
         if (command == PSMOUSE_CMD_ENABLE)
             ps2ctr = (ps2ctr | I8042_CTR_AUXINT) & ~I8042_CTR_AUXDIS;
         else
             ps2ctr = (ps2ctr | I8042_CTR_AUXDIS) & ~I8042_CTR_AUXINT;
-        SET_EBDA2(ebda_seg, ps2ctr, ps2ctr);
+        SET_LOW(Ps2ctr, ps2ctr);
     }
 
     return ps2_command(1, command, param);
@@ -371,7 +372,7 @@
     }
     v = inb(PORT_PS2_DATA);
 
-    if (!(GET_EBDA(ps2ctr) & I8042_CTR_AUXINT))
+    if (!(GET_LOW(Ps2ctr) & I8042_CTR_AUXINT))
         // Interrupts not enabled.
         goto done;
 
@@ -398,7 +399,7 @@
     }
     v = inb(PORT_PS2_DATA);
 
-    if (!(GET_EBDA(ps2ctr) & I8042_CTR_KBDINT))
+    if (!(GET_LOW(Ps2ctr) & I8042_CTR_KBDINT))
         // Interrupts not enabled.
         goto done;
 
@@ -444,7 +445,7 @@
     }
 
     // Disable keyboard and mouse events.
-    SET_EBDA(ps2ctr, I8042_CTR_KBDDIS | I8042_CTR_AUXDIS);
+    SET_LOW(Ps2ctr, I8042_CTR_KBDDIS | I8042_CTR_AUXDIS);
 
 
     /* ------------------- keyboard side ------------------------*/
@@ -479,7 +480,7 @@
         return;
 
     // Keyboard Mode: disable mouse, scan code convert, enable kbd IRQ
-    SET_EBDA(ps2ctr, I8042_CTR_AUXDIS | I8042_CTR_XLATE | I8042_CTR_KBDINT);
+    SET_LOW(Ps2ctr, I8042_CTR_AUXDIS | I8042_CTR_XLATE | I8042_CTR_KBDINT);
 
     /* Enable keyboard */
     ret = ps2_kbd_command(ATKBD_CMD_ENABLE, NULL);
