Fix CS.base register after #RESET

update changes
This commit is contained in:
Stanislav Shwartsman 2004-11-16 19:19:13 +00:00
parent 82ea615428
commit 02fc33a86b
4 changed files with 19 additions and 10 deletions

View File

@ -169,6 +169,17 @@ Changes to next release:
- patch.apic-zwane (APIC fixes) (Zwane Mwaikambo)
- these S.F. bugs were closed
#922034 bios not aliased at 0xFFFFF000, registers wrong after reset
#912666 Configure fails on Yellow Dog Linux 3.0.1
#922038 Unexisting memory should read back as 0xFFFFFFFF
#1019723 HD image
#1057814 Shadow RAM not aligned
#1057240 Invalid IRET32 implementation
#809682 >> PANIC << : prefetch: RIP > CS.limit
#618680 memory referencing problems
#724262 A few things (Windows 2.03, Wolfenstein)
#985375 Crash Mandrake 7.1
#913418 compiler errors with --enable-external-debugger option
#708847 CR8 access should not panic X86-64
#1039499 Compile error pcipnic.cc (cygwin)
#978024 compile against wxGTK-2.5.2 fails

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: init.cc,v 1.58 2004-11-14 21:47:58 sshwarts Exp $
// $Id: init.cc,v 1.59 2004-11-16 19:19:11 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -162,7 +162,7 @@ cpu_param_handler (bx_param_c *param, int set, Bit64s val)
void BX_CPU_C::init(BX_MEM_C *addrspace)
{
BX_DEBUG(( "Init $Id: init.cc,v 1.58 2004-11-14 21:47:58 sshwarts Exp $"));
BX_DEBUG(( "Init $Id: init.cc,v 1.59 2004-11-16 19:19:11 sshwarts Exp $"));
// BX_CPU_C constructor
BX_CPU_THIS_PTR set_INTR (0);
#if BX_SUPPORT_APIC
@ -553,7 +553,7 @@ void BX_CPU_C::reset(unsigned source)
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.c_ed = 0; /* normal expand up */
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.r_w = 1; /* writeable */
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.a = 1; /* accessed */
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.base = 0x000F0000;
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.base = 0xFFFF0000;
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.limit = 0xFFFF;
BX_CPU_THIS_PTR sregs[BX_SEG_REG_CS].cache.u.segment.limit_scaled = 0xFFFF;
#endif

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: floppy.cc,v 1.74 2004-06-19 15:20:11 sshwarts Exp $
// $Id: floppy.cc,v 1.75 2004-11-16 19:19:12 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002 MandrakeSoft S.A.
@ -132,7 +132,7 @@ bx_floppy_ctrl_c::init(void)
{
Bit8u i;
BX_DEBUG(("Init $Id: floppy.cc,v 1.74 2004-06-19 15:20:11 sshwarts Exp $"));
BX_DEBUG(("Init $Id: floppy.cc,v 1.75 2004-11-16 19:19:12 sshwarts Exp $"));
DEV_dma_register_8bit_channel(2, dma_read, dma_write, "Floppy Drive");
DEV_register_irq(6, "Floppy Drive");
for (unsigned addr=0x03F2; addr<=0x03F7; addr++) {
@ -991,7 +991,7 @@ bx_floppy_ctrl_c::floppy_command(void)
bx_floppy_ctrl_c::floppy_xfer(Bit8u drive, Bit32u offset, Bit8u *buffer,
Bit32u bytes, Bit8u direction)
{
int ret;
int ret = 0;
if (BX_FD_THIS s.device_type[drive] == BX_FLOPPY_NONE)
BX_PANIC(("floppy_xfer: bad drive #%d", drive));

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: misc_mem.cc,v 1.55 2004-11-16 18:50:21 vruppert Exp $
// $Id: misc_mem.cc,v 1.56 2004-11-16 19:19:13 sshwarts Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2002 MandrakeSoft S.A.
@ -95,7 +95,7 @@ void BX_MEM_C::init_memory(int memsize)
{
int idx;
BX_DEBUG(("Init $Id: misc_mem.cc,v 1.55 2004-11-16 18:50:21 vruppert Exp $"));
BX_DEBUG(("Init $Id: misc_mem.cc,v 1.56 2004-11-16 19:19:13 sshwarts Exp $"));
// you can pass 0 if memory has been allocated already through
// the constructor, or the desired size of memory if it hasn't
// BX_INFO(("%.2fMB", (float)(BX_MEM_THIS megabytes) ));
@ -378,8 +378,6 @@ BX_MEM_C::dbg_crc32(unsigned long (*f)(unsigned char *buf, int len),
Bit8u * BX_CPP_AttrRegparmN(3)
BX_MEM_C::getHostMemAddr(BX_CPU_C *cpu, Bit32u a20Addr, unsigned op)
{
if ( a20Addr >= BX_MEM_THIS len )
return(NULL); // Error, requested addr is out of bounds.
#if BX_SUPPORT_APIC
bx_generic_apic_c *local_apic = &cpu->local_apic;