From 08823d6c8cd476e82138a1ab640a95190c406ca7 Mon Sep 17 00:00:00 2001 From: jkim Date: Fri, 25 Sep 2009 17:56:32 +0000 Subject: - 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) --- sys/compat/x86bios/x86bios.c | 16 +++++++++------- sys/compat/x86bios/x86bios.h | 10 +++------- 2 files changed, 12 insertions(+), 14 deletions(-) (limited to 'sys/compat/x86bios') diff --git a/sys/compat/x86bios/x86bios.c b/sys/compat/x86bios/x86bios.c index 9741b0c..b187ae9 100644 --- a/sys/compat/x86bios/x86bios.c +++ b/sys/compat/x86bios/x86bios.c @@ -98,9 +98,10 @@ x86bios_intr(struct x86regs *regs, int intno) 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 intno) 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)); diff --git a/sys/compat/x86bios/x86bios.h b/sys/compat/x86bios/x86bios.h index adf8b7c..35cbbce 100644 --- a/sys/compat/x86bios/x86bios.h +++ b/sys/compat/x86bios/x86bios.h @@ -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); -- cgit v1.1