ref: 56dc84765957c3a4156b55012d06069918ec0335
parent: f7c53e9c98da3da1132e32fc251cac7ed6b872e3
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sat Nov 5 02:54:48 EDT 2011
vesa/realmode cleanup
--- a/sys/src/9/pc/l.s
+++ b/sys/src/9/pc/l.s
@@ -1,5 +1,4 @@
#include "mem.h"
-#include "/sys/src/boot/pc/x16.h"
#undef DELAY
#define PADDR(a) ((a) & ~KZERO)
--- a/sys/src/9/pc/mem.h
+++ b/sys/src/9/pc/mem.h
@@ -60,7 +60,6 @@
#define CONFADDR (KZERO+0x1200) /* info passed from boot loader */
#define TMPADDR (KZERO+0x2000) /* used for temporary mappings */
#define APBOOTSTRAP (KZERO+0x3000) /* AP bootstrap code */
-#define RMBUF (KZERO+0x9000) /* buffer for user space - known to vga */
#define IDTADDR (KZERO+0x10800) /* idt */
#define REBOOTADDR (0x11000) /* reboot code - physical address */
#define CPU0PDB (KZERO+0x12000) /* bootstrap processor PDB */
--- a/sys/src/9/pc/vgavesa.c
+++ b/sys/src/9/pc/vgavesa.c
@@ -20,6 +20,8 @@
Cdisable = 0,
Cenable,
Cblank,
+
+ RealModeBuf = 0x9000,
};
static void *hardscreen;
@@ -37,14 +39,11 @@
static uchar*
vbesetup(Ureg *u, int ax)
{- ulong pa;
-
- pa = PADDR(RMBUF);
memset(modebuf, 0, sizeof modebuf);
memset(u, 0, sizeof *u);
u->ax = ax;
- u->es = (pa>>4)&0xF000;
- u->di = pa&0xFFFF;
+ u->es = (RealModeBuf>>4)&0xF000;
+ u->di = RealModeBuf&0xFFFF;
return modebuf;
}
@@ -51,12 +50,8 @@
static void
vbecall(Ureg *u)
{- ulong pa;
-
- pa = PADDR(RMBUF);
- if(devtab[cmem->type]->write(cmem, modebuf, sizeof(modebuf), pa) != sizeof(modebuf))
+ if(devtab[cmem->type]->write(cmem, modebuf, sizeof(modebuf), RealModeBuf) != sizeof(modebuf))
error("write modebuf");-
u->trap = 0x10;
if(devtab[creg->type]->write(creg, u, sizeof(*u), 0) != sizeof(*u))
error("write ureg");@@ -64,8 +59,7 @@
error("read ureg");if((u->ax&0xFFFF) != 0x004F)
error("vesa bios error");-
- if(devtab[cmem->type]->read(cmem, modebuf, sizeof(modebuf), pa) != sizeof(modebuf))
+ if(devtab[cmem->type]->read(cmem, modebuf, sizeof(modebuf), RealModeBuf) != sizeof(modebuf))
error("read modebuf");}
--
⑨