hopefully solved bugreport [ 612741 ] VBE mem conflicts w/ local APIC address

This commit is contained in:
Jeroen Janssen 2002-09-22 11:31:48 +00:00
parent 2b7654a37d
commit 53723a8569
3 changed files with 14 additions and 11 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;