BIOS patches from Sebastian

This commit is contained in:
Stanislav Shwartsman 2009-12-21 08:08:24 +00:00
parent d41bbbc412
commit 79e08eb21e
2 changed files with 17 additions and 13 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: rombios.c,v 1.237 2009-12-20 16:43:50 sshwarts Exp $
// $Id: rombios.c,v 1.238 2009-12-21 08:08:24 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002 MandrakeSoft S.A.
@ -937,7 +937,7 @@ Bit16u cdrom_boot();
#endif // BX_ELTORITO_BOOT
static char bios_cvs_version_string[] = "$Revision: 1.237 $ $Date: 2009-12-20 16:43:50 $";
static char bios_cvs_version_string[] = "$Revision: 1.238 $ $Date: 2009-12-21 08:08:24 $";
#define BIOS_COPYRIGHT_STRING "(c) 2002 MandrakeSoft S.A. Written by Kevin Lawton & the Bochs team."
@ -4653,42 +4653,42 @@ ASM_END
{
case 0:
set_e820_range(ES, regs.u.r16.di,
0x0000000L, 0x0009f000L, 0, 0, 1);
0x0000000L, 0x0009f000L, 0, 0, E820_RAM);
regs.u.r32.ebx = 1;
break;
case 1:
set_e820_range(ES, regs.u.r16.di,
0x0009f000L, 0x000a0000L, 0, 0, 2);
0x0009f000L, 0x000a0000L, 0, 0, E820_RESERVED);
regs.u.r32.ebx = 2;
break;
case 2:
set_e820_range(ES, regs.u.r16.di,
0x000e8000L, 0x00100000L, 0, 0, 2);
0x000e8000L, 0x00100000L, 0, 0, E820_RESERVED);
regs.u.r32.ebx = 3;
break;
case 3:
#if BX_ROMBIOS32
set_e820_range(ES, regs.u.r16.di,
0x00100000L,
extended_memory_size - ACPI_DATA_SIZE, 0, 0, 1);
extended_memory_size - ACPI_DATA_SIZE, 0, 0, E820_RAM);
regs.u.r32.ebx = 4;
#else
set_e820_range(ES, regs.u.r16.di,
0x00100000L,
extended_memory_size, 0, 0, 1);
extended_memory_size, 0, 0, E820_RAM);
regs.u.r32.ebx = 5;
#endif
break;
case 4:
set_e820_range(ES, regs.u.r16.di,
extended_memory_size - ACPI_DATA_SIZE,
extended_memory_size, 0, 0, 3); // ACPI RAM
extended_memory_size, 0, 0, E820_ACPI);
regs.u.r32.ebx = 5;
break;
case 5:
/* 256KB BIOS area at the end of 4 GB */
set_e820_range(ES, regs.u.r16.di,
0xfffc0000L, 0x00000000L, 0, 0, 2);
0xfffc0000L, 0x00000000L, 0, 0, E820_RESERVED);
if (extra_highbits_memory_size || extra_lowbits_memory_size)
regs.u.r32.ebx = 6;
else
@ -4698,7 +4698,7 @@ ASM_END
/* Maping of memory above 4 GB */
set_e820_range(ES, regs.u.r16.di, 0x00000000L,
extra_lowbits_memory_size, 1, extra_highbits_memory_size
+ 1, 1);
+ 1, E820_RAM);
regs.u.r32.ebx = 0;
break;
default: /* AX=E820, DX=534D4150, BX unrecognized */

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: rombios.h,v 1.9 2009-01-26 09:21:00 vruppert Exp $
// $Id: rombios.h,v 1.10 2009-12-21 08:08:24 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2006 Volker Ruppert
@ -61,8 +61,12 @@
// Define the application NAME
#if defined(BX_QEMU)
# define BX_APPNAME "QEMU"
#elif defined(PLEX86)
# define BX_APPNAME "Plex86"
#else
# define BX_APPNAME "Bochs"
#endif
#define E820_RAM 1
#define E820_RESERVED 2
#define E820_ACPI 3
#define E820_NVS 4
#define E820_UNUSABLE 5