Skip to content

Commit

Permalink
Implement Voodoo 3 writes with length 8 (#173)
Browse files Browse the repository at this point in the history
Fixes #172

Co-authored-by: Stanislav Shwartsman <[email protected]>
  • Loading branch information
Vort and stlintel authored Dec 16, 2023
1 parent 0fbf559 commit 0270412
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 5 deletions.
9 changes: 6 additions & 3 deletions bochs/iodev/display/banshee.cc
Original file line number Diff line number Diff line change
Expand Up @@ -843,7 +843,7 @@ void bx_banshee_c::mem_read(bx_phy_address addr, unsigned len, void *data)
*((Bit32u*)data) = (Bit32u)value;
break;
case 8:
*((Bit64u*)data) = (Bit64u)value;
*((Bit64u*)data) = value;
break;
default:
BX_ERROR(("bx_banshee_c::mem_read unsupported length %d", len));
Expand Down Expand Up @@ -906,7 +906,7 @@ void bx_banshee_c::mem_read(bx_phy_address addr, unsigned len, void *data)
void bx_banshee_c::mem_write(bx_phy_address addr, unsigned len, void *data)
{
Bit32u offset = (addr & 0x1ffffff);
Bit32u value = 0;
Bit64u value = 0;
Bit32u mask = 0xffffffff;

switch (len) {
Expand All @@ -919,6 +919,9 @@ void bx_banshee_c::mem_write(bx_phy_address addr, unsigned len, void *data)
case 4:
value = *(Bit32u*)data;
break;
case 8:
value = *(Bit64u*)data;
break;
default:
BX_ERROR(("bx_banshee_c::mem_write unsupported length %d", len));
}
Expand Down Expand Up @@ -975,7 +978,7 @@ void bx_banshee_c::mem_write(bx_phy_address addr, unsigned len, void *data)
}
}

void bx_banshee_c::mem_write_linear(Bit32u offset, Bit32u value, unsigned len)
void bx_banshee_c::mem_write_linear(Bit32u offset, Bit64u value, unsigned len)
{
Bit8u value8;
Bit32u start = v->banshee.io[io_vidDesktopStartAddr];
Expand Down
4 changes: 2 additions & 2 deletions bochs/iodev/display/voodoo.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class bx_voodoo_base_c : public bx_nonvga_device_c {

virtual void reg_write(Bit32u reg, Bit32u value);
virtual void blt_reg_write(Bit8u reg, Bit32u value) {}
virtual void mem_write_linear(Bit32u offset, Bit32u value, unsigned len) {}
virtual void mem_write_linear(Bit32u offset, Bit64u value, unsigned len) {}
virtual void draw_hwcursor(unsigned xc, unsigned yc, bx_svga_tileinfo_t *info) {}
virtual void set_tile_updated(unsigned xti, unsigned yti, bool flag) {}

Expand Down Expand Up @@ -128,7 +128,7 @@ class bx_banshee_c : public bx_voodoo_base_c {

virtual void reg_write(Bit32u reg, Bit32u value);
virtual void blt_reg_write(Bit8u reg, Bit32u value);
virtual void mem_write_linear(Bit32u offset, Bit32u value, unsigned len);
virtual void mem_write_linear(Bit32u offset, Bit64u value, unsigned len);
virtual void draw_hwcursor(unsigned xc, unsigned yc, bx_svga_tileinfo_t *info);
virtual void set_tile_updated(unsigned xti, unsigned yti, bool flag);

Expand Down

0 comments on commit 0270412

Please sign in to comment.