From 53723a8569dbf8793c02bbd15cb3dff46c55452d Mon Sep 17 00:00:00 2001 From: Jeroen Janssen Date: Sun, 22 Sep 2002 11:31:48 +0000 Subject: [PATCH] hopefully solved bugreport [ 612741 ] VBE mem conflicts w/ local APIC address --- bochs/iodev/vga.cc | 8 ++++---- bochs/iodev/vga.h | 7 +++++-- bochs/memory/memory.cc | 10 +++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/bochs/iodev/vga.cc b/bochs/iodev/vga.cc index 9d472ee46..a20cd3d07 100644 --- a/bochs/iodev/vga.cc +++ b/bochs/iodev/vga.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: vga.cc,v 1.41 2002-09-19 18:59:50 vruppert Exp $ +// $Id: vga.cc,v 1.42 2002-09-22 11:31:48 japj Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -2155,7 +2155,7 @@ bx_vga_c::vbe_mem_read(Bit32u addr) } // check for out of memory read - if (offset > sizeof(BX_VGA_THIS s.vbe_memory)) + if (offset > VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES) return 0; return (BX_VGA_THIS s.vbe_memory[offset]); @@ -2179,7 +2179,7 @@ bx_vga_c::vbe_mem_write(Bit32u addr, Bit8u value) } // check for out of memory write - if (offset < sizeof(BX_VGA_THIS s.vbe_memory)) + if (offset < VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES) { BX_VGA_THIS s.vbe_memory[offset]=value; } @@ -2431,7 +2431,7 @@ bx_vga_c::vbe_write(Bit32u address, Bit32u value, unsigned io_len) value=value & 0xff ; // FIXME lobyte = vbe bank A? // check for max bank nr - if (value < (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024 /64)) + if (value < (VBE_DISPI_TOTAL_VIDEO_MEMORY_KB /64)) { BX_INFO(("VBE set bank to %d", value)); BX_VGA_THIS s.vbe_bank=value; diff --git a/bochs/iodev/vga.h b/bochs/iodev/vga.h index 3f3cb9d0a..893b10305 100644 --- a/bochs/iodev/vga.h +++ b/bochs/iodev/vga.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: vga.h,v 1.16 2002-09-19 18:59:50 vruppert Exp $ +// $Id: vga.h,v 1.17 2002-09-22 11:31:48 japj Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -59,6 +59,9 @@ #define VBE_DISPI_ENABLED 0x01 #define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000 + +#define VBE_DISPI_TOTAL_VIDEO_MEMORY_KB (VBE_DISPI_TOTAL_VIDEO_MEMORY_MB * 1024) +#define VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES (VBE_DISPI_TOTAL_VIDEO_MEMORY_KB * 1024) #define BX_MAX_XRES VBE_DISPI_MAX_XRES #define BX_MAX_YRES VBE_DISPI_MAX_YRES @@ -227,7 +230,7 @@ private: Bit16u charmap_address; #if BX_SUPPORT_VBE - Bit8u vbe_memory[VBE_DISPI_TOTAL_VIDEO_MEMORY_MB *1024 * 1024]; + Bit8u vbe_memory[VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES]; Bit16u vbe_cur_dispi; Bit16u vbe_xres; Bit16u vbe_yres; diff --git a/bochs/memory/memory.cc b/bochs/memory/memory.cc index 029e8c2ae..3f6c4a831 100644 --- a/bochs/memory/memory.cc +++ b/bochs/memory/memory.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: memory.cc,v 1.21 2002-09-19 19:17:20 kevinlawton Exp $ +// $Id: memory.cc,v 1.22 2002-09-22 11:31:48 japj Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2001 MandrakeSoft S.A. @@ -232,10 +232,10 @@ inc_one: #if BX_SUPPORT_VBE // Check VBE LFB support - if (a20addr >= VBE_DISPI_LFB_PHYSICAL_ADDRESS) + if ((a20addr >= VBE_DISPI_LFB_PHYSICAL_ADDRESS) && + (a20addr < (VBE_DISPI_LFB_PHYSICAL_ADDRESS + VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES))) { for (i = 0; i < len; i++) { - // FIXME: check for max VBE video memory size //if (a20addr < BX_MEM_THIS len) { //vector[a20addr] = *data_ptr; @@ -462,10 +462,10 @@ inc_one: #if BX_SUPPORT_VBE // Check VBE LFB support - if (a20addr >= VBE_DISPI_LFB_PHYSICAL_ADDRESS) + if ((a20addr >= VBE_DISPI_LFB_PHYSICAL_ADDRESS) && + (a20addr < (VBE_DISPI_LFB_PHYSICAL_ADDRESS + VBE_DISPI_TOTAL_VIDEO_MEMORY_BYTES))) { for (i = 0; i < len; i++) { - // FIXME: check for max VBE video memory size //if (a20addr < BX_MEM_THIS len) { //vector[a20addr] = *data_ptr;