- dma16 read/write functions added (untested)

This commit is contained in:
Volker Ruppert 2001-12-18 13:14:46 +00:00
parent 33f4ee6e35
commit 868af09f14
2 changed files with 32 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: pc_system.cc,v 1.15 2001-10-03 13:10:37 bdenney Exp $
// $Id: pc_system.cc,v 1.16 2001-12-18 13:14:46 vruppert Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -134,7 +134,6 @@ bx_pc_system_c::dma_write8(Bit32u phy_addr, unsigned channel)
Bit8u data_byte;
UNUSED(channel);
bx_devices.dma_write8(channel, &data_byte);
BX_MEM(0)->write_physical(BX_CPU(0), phy_addr, 1, &data_byte);
@ -149,7 +148,6 @@ bx_pc_system_c::dma_read8(Bit32u phy_addr, unsigned channel)
Bit8u data_byte;
UNUSED(channel);
BX_MEM(0)->read_physical(BX_CPU(0), phy_addr, 1, &data_byte);
bx_devices.dma_read8(channel, &data_byte);
@ -157,6 +155,34 @@ bx_pc_system_c::dma_read8(Bit32u phy_addr, unsigned channel)
}
void
bx_pc_system_c::dma_write16(Bit32u phy_addr, unsigned channel)
{
// DMA controlled xfer of word from I/O to Memory
Bit16u data_word;
bx_devices.dma_write16(channel, &data_word);
BX_MEM(0)->write_physical(BX_CPU(0), phy_addr, 2, &data_word);
BX_DBG_DMA_REPORT(phy_addr, 2, BX_WRITE, data_word);
}
void
bx_pc_system_c::dma_read16(Bit32u phy_addr, unsigned channel)
{
// DMA controlled xfer of word from Memory to I/O
Bit16u data_word;
BX_MEM(0)->read_physical(BX_CPU(0), phy_addr, 2, &data_word);
bx_devices.dma_read16(channel, &data_word);
BX_DBG_DMA_REPORT(phy_addr, 2, BX_READ, data_word);
}
#if (BX_NUM_SIMULATORS < 2)
void
bx_pc_system_c::set_INTR(Boolean value)

View File

@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////
// $Id: pc_system.h,v 1.8 2001-10-03 13:10:37 bdenney Exp $
// $Id: pc_system.h,v 1.9 2001-12-18 13:14:46 vruppert Exp $
/////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2001 MandrakeSoft S.A.
@ -162,6 +162,8 @@ public:
void dma_write8(Bit32u phy_addr, unsigned channel);
void dma_read8(Bit32u phy_addr, unsigned channel);
void dma_write16(Bit32u phy_addr, unsigned channel);
void dma_read16(Bit32u phy_addr, unsigned channel);
Bit32u inp(Bit16u addr, unsigned io_len);
void outp(Bit16u addr, Bit32u value, unsigned io_len);