svn commit: r197493 - head/sys/compat/x86bios

Jung-uk Kim jkim at FreeBSD.org
Fri Sep 25 17:56:33 UTC 2009


Author: jkim
Date: Fri Sep 25 17:56:32 2009
New Revision: 197493
URL: http://svn.freebsd.org/changeset/base/197493

Log:
  - Reduce BIOS memory mapping.  We want 1MB of physical memory, not 12MB[1].
  - Remove CS and IP registers from x86bios.h.  They have no use for us.
  - Adjust register dump to make it little bit more useful for debugging.
  
  Submitted by:	paradox (ddkprog yahoo com)[1] (initial version)

Modified:
  head/sys/compat/x86bios/x86bios.c
  head/sys/compat/x86bios/x86bios.h

Modified: head/sys/compat/x86bios/x86bios.c
==============================================================================
--- head/sys/compat/x86bios/x86bios.c	Fri Sep 25 17:56:13 2009	(r197492)
+++ head/sys/compat/x86bios/x86bios.c	Fri Sep 25 17:56:32 2009	(r197493)
@@ -98,9 +98,10 @@ x86bios_intr(struct x86regs *regs, int i
 		return;
 
 	if (bootverbose)
-		printf("Calling real mode int 0x%x "
-		    "(ax=0x%04x bx=0x%04x cx=0x%04x dx=0x%04x)\n",
-		    intno, regs->R_AX, regs->R_BX, regs->R_CX, regs->R_DX);
+		printf("Calling int 0x%x (ax=0x%04x bx=0x%04x "
+		    "cx=0x%04x dx=0x%04x es=0x%04x di=0x%04x)\n",
+		    intno, regs->R_AX, regs->R_BX, regs->R_CX,
+		    regs->R_DX, regs->R_ES, regs->R_DI);
 
 	mtx_lock_spin(&x86bios_lock);
 
@@ -111,9 +112,10 @@ x86bios_intr(struct x86regs *regs, int i
 	mtx_unlock_spin(&x86bios_lock);
 
 	if (bootverbose)
-		printf("Exiting real mode int 0x%x "
-		    "(ax=0x%04x bx=0x%04x cx=0x%04x dx=0x%04x)\n",
-		    intno, regs->R_AX, regs->R_BX, regs->R_CX, regs->R_DX);
+		printf("Exiting int 0x%x (ax=0x%04x bx=0x%04x "
+		    "cx=0x%04x dx=0x%04x es=0x%04x di=0x%04x)\n",
+		    intno, regs->R_AX, regs->R_BX, regs->R_CX,
+		    regs->R_DX, regs->R_ES, regs->R_DI);
 }
 
 void *
@@ -144,7 +146,7 @@ x86bios_init(void *arg __unused)
 	x86bios_emu.emu_outl = x86bios_emu_outl;
 
 	x86bios_emu.mem_base = (char *)pbiosMem;
-	x86bios_emu.mem_size = 1024 * 1024;
+	x86bios_emu.mem_size = MAPPED_MEMORY_SIZE;
 
 	memset(busySegMap, 0, sizeof(busySegMap));
 

Modified: head/sys/compat/x86bios/x86bios.h
==============================================================================
--- head/sys/compat/x86bios/x86bios.h	Fri Sep 25 17:56:13 2009	(r197492)
+++ head/sys/compat/x86bios/x86bios.h	Fri Sep 25 17:56:32 2009	(r197493)
@@ -54,7 +54,7 @@ union x86_register {
 };
 
 struct x86regs {
-	uint16_t		register_cs;
+	uint16_t		padding;	/* CS is unused. */
 	uint16_t		register_ds;
 	uint16_t		register_es;
 	uint16_t		register_fs;
@@ -70,7 +70,6 @@ struct x86regs {
 	union x86_register	register_bp;
 	union x86_register	register_si;
 	union x86_register	register_di;
-	union x86_register	register_ip;
 };
 
 typedef struct x86regs	x86regs_t;
@@ -102,7 +101,6 @@ typedef struct x86regs	x86regs_t;
 #define R_BP	register_bp.I16_reg.x_reg
 #define R_SI	register_si.I16_reg.x_reg
 #define R_DI	register_di.I16_reg.x_reg
-#define R_IP	register_ip.I16_reg.x_reg
 #define R_FLG	register_flags
 
 /* special registers */
@@ -110,11 +108,9 @@ typedef struct x86regs	x86regs_t;
 #define R_EBP	register_bp.I32_reg.e_reg
 #define R_ESI	register_si.I32_reg.e_reg
 #define R_EDI	register_di.I32_reg.e_reg
-#define R_EIP	register_ip.I32_reg.e_reg
 #define R_EFLG	register_flags
 
 /* segment registers */
-#define R_CS	register_cs
 #define R_DS	register_ds
 #define R_SS	register_ss
 #define R_ES	register_es
@@ -125,8 +121,8 @@ typedef struct x86regs	x86regs_t;
 #define SEG_OFF(x)	((x) & 0x0FFFF)
 #define FARP(x)		((le32toh(x) & 0xffff) + ((le32toh(x) >> 12) & 0xffff00))
 
-#define MAPPED_MEMORY_SIZE	0xc00000
-#define PAGE_RESERV		(4096*5)
+#define MAPPED_MEMORY_SIZE	(1024 * 1024)
+#define PAGE_RESERV		(4096 * 5)
 
 __BEGIN_DECLS
 void *x86bios_alloc(int count, int *segs);


More information about the svn-src-all mailing list