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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to