git: 9front

Download patch

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");
 }
 
--