hopefully solved bugreport [ 612741 ] VBE mem conflicts w/ local APIC address
This commit is contained in:
parent
2b7654a37d
commit
53723a8569
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user