Merge pull request #5301 from 86Box/tc1995
Mach32 LFB changes of the day (March 8th, 2025)
This commit is contained in:
@@ -5223,11 +5223,11 @@ mach32_ap_writeb(uint32_t addr, uint8_t val, void *priv)
|
||||
mach_t *mach = (mach_t *) priv;
|
||||
svga_t *svga = &mach->svga;
|
||||
const ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t port_dword = (addr - mach->linear_base) & 0xfc;
|
||||
uint8_t port_dword = addr & 0xfc;
|
||||
|
||||
if (((mach->local_cntl & 0x20) || (mach->pci_cntl_reg & 0x80)) &&
|
||||
(((addr - mach->linear_base) >= ((mach->ap_size << 20) - 0x200)) && (addr < (mach->ap_size << 20)))) {
|
||||
if ((addr - mach->linear_base) & 0x100) {
|
||||
if (addr & 0x100) {
|
||||
mach_log("Port WORDB Write=%04x.\n", 0x02ee + (port_dword << 8));
|
||||
mach_accel_outb(0x02ee + (addr & 1) + (port_dword << 8), val, mach);
|
||||
} else {
|
||||
@@ -5238,9 +5238,9 @@ mach32_ap_writeb(uint32_t addr, uint8_t val, void *priv)
|
||||
mach_log("Linear WORDB Write=%08x, val=%02x, ON=%x, dpconfig=%04x, apsize=%08x.\n",
|
||||
addr & dev->vram_mask, val, dev->on, mach->accel.dp_config, mach->ap_size << 20);
|
||||
if (dev->on)
|
||||
mach32_write_common(addr - mach->linear_base, val, 1, mach, svga);
|
||||
mach32_write_common(addr, val, 1, mach, svga);
|
||||
else
|
||||
svga_write_linear(addr - mach->linear_base, val, svga);
|
||||
svga_write_linear(addr, val, svga);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5250,11 +5250,11 @@ mach32_ap_writew(uint32_t addr, uint16_t val, void *priv)
|
||||
mach_t *mach = (mach_t *) priv;
|
||||
svga_t *svga = &mach->svga;
|
||||
const ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t port_dword = (addr - mach->linear_base) & 0xfc;
|
||||
uint8_t port_dword = addr & 0xfc;
|
||||
|
||||
if (((mach->local_cntl & 0x20) || (mach->pci_cntl_reg & 0x80)) &&
|
||||
(((addr - mach->linear_base) >= ((mach->ap_size << 20) - 0x200)) && ((addr - mach->linear_base) < (mach->ap_size << 20)))) {
|
||||
if ((addr - mach->linear_base) & 0x100) {
|
||||
if (addr & 0x100) {
|
||||
mach_log("Port WORDW Write=%04x.\n", 0x02ee + (port_dword << 8));
|
||||
mach_accel_outw(0x02ee + (port_dword << 8), val, mach);
|
||||
} else {
|
||||
@@ -5265,9 +5265,9 @@ mach32_ap_writew(uint32_t addr, uint16_t val, void *priv)
|
||||
mach_log("Linear WORDW Write=%08x, val=%04x, ON=%x, dpconfig=%04x, apsize=%08x.\n",
|
||||
addr - mach->linear_base, val, dev->on, mach->accel.dp_config, mach->ap_size << 20);
|
||||
if (dev->on)
|
||||
mach32_writew_linear(addr - mach->linear_base, val, mach);
|
||||
mach32_writew_linear(addr, val, mach);
|
||||
else
|
||||
svga_writew_linear(addr - mach->linear_base, val, svga);
|
||||
svga_writew_linear(addr, val, svga);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5277,11 +5277,11 @@ mach32_ap_writel(uint32_t addr, uint32_t val, void *priv)
|
||||
mach_t *mach = (mach_t *) priv;
|
||||
svga_t *svga = &mach->svga;
|
||||
const ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t port_dword = (addr - mach->linear_base) & 0xfc;
|
||||
uint8_t port_dword = addr & 0xfc;
|
||||
|
||||
if (((mach->local_cntl & 0x20) || (mach->pci_cntl_reg & 0x80)) &&
|
||||
(((addr - mach->linear_base) >= ((mach->ap_size << 20) - 0x200)) && ((addr - mach->linear_base) < (mach->ap_size << 20)))) {
|
||||
if ((addr - mach->linear_base) & 0x100) {
|
||||
if (addr & 0x100) {
|
||||
mach_log("Port WORDL Write=%04x.\n", 0x02ee + (port_dword << 8));
|
||||
mach_accel_outw(0x02ee + (port_dword << 8), val & 0xffff, mach);
|
||||
mach_accel_outw(0x02ee + (port_dword << 8) + 4, val >> 16, mach);
|
||||
@@ -5294,9 +5294,9 @@ mach32_ap_writel(uint32_t addr, uint32_t val, void *priv)
|
||||
mach_log("Linear WORDL Write=%08x, val=%08x, ON=%x, dpconfig=%04x, apsize=%08x.\n",
|
||||
addr - mach->linear_base, val, dev->on, mach->accel.dp_config, mach->ap_size << 20);
|
||||
if (dev->on)
|
||||
mach32_writel_linear(addr - mach->linear_base, val, mach);
|
||||
mach32_writel_linear(addr, val, mach);
|
||||
else
|
||||
svga_writel_linear(addr - mach->linear_base, val, svga);
|
||||
svga_writel_linear(addr, val, svga);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5307,19 +5307,19 @@ mach32_ap_readb(uint32_t addr, void *priv)
|
||||
svga_t *svga = &mach->svga;
|
||||
const ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint8_t temp;
|
||||
uint8_t port_dword = (addr - mach->linear_base) & 0xfc;
|
||||
uint8_t port_dword = addr & 0xfc;
|
||||
|
||||
if (((mach->local_cntl & 0x20) || (mach->pci_cntl_reg & 0x80)) &&
|
||||
(((addr - mach->linear_base) >= ((mach->ap_size << 20) - 0x200)) && ((addr - mach->linear_base) < (mach->ap_size << 20)))) {
|
||||
if ((addr - mach->linear_base) & 0x100)
|
||||
if (addr & 0x100)
|
||||
temp = mach_accel_inb(0x02ee + (addr & 1) + (port_dword << 8), mach);
|
||||
else
|
||||
temp = mach_accel_inb(0x02e8 + (addr & 1) + (port_dword << 8), mach);
|
||||
} else {
|
||||
if (dev->on)
|
||||
temp = mach32_read_common(addr - mach->linear_base, 1, mach, svga);
|
||||
temp = mach32_read_common(addr, 1, mach, svga);
|
||||
else
|
||||
temp = svga_read_linear(addr - mach->linear_base, svga);
|
||||
temp = svga_read_linear(addr, svga);
|
||||
|
||||
mach_log("Linear WORDB Read=%08x, ret=%02x, fast=%d.\n", addr, temp, svga->fast);
|
||||
}
|
||||
@@ -5338,15 +5338,15 @@ mach32_ap_readw(uint32_t addr, void *priv)
|
||||
|
||||
if (((mach->local_cntl & 0x20) || (mach->pci_cntl_reg & 0x80)) &&
|
||||
(((addr - mach->linear_base) >= ((mach->ap_size << 20) - 0x200)) && ((addr - mach->linear_base) < (mach->ap_size << 20)))) {
|
||||
if ((addr - mach->linear_base) & 0x100)
|
||||
if (addr & 0x100)
|
||||
temp = mach_accel_inw(0x02ee + (port_dword << 8), mach);
|
||||
else
|
||||
temp = mach_accel_inw(0x02e8 + (port_dword << 8), mach);
|
||||
} else {
|
||||
if (dev->on)
|
||||
temp = mach32_readw_linear(addr - mach->linear_base, mach);
|
||||
temp = mach32_readw_linear(addr, mach);
|
||||
else
|
||||
temp = svga_readw_linear(addr - mach->linear_base, svga);
|
||||
temp = svga_readw_linear(addr, svga);
|
||||
|
||||
mach_log("Linear WORDW Read=%08x, ret=%04x.\n", addr, temp);
|
||||
}
|
||||
@@ -5361,11 +5361,11 @@ mach32_ap_readl(uint32_t addr, void *priv)
|
||||
svga_t *svga = &mach->svga;
|
||||
const ibm8514_t *dev = (ibm8514_t *) svga->dev8514;
|
||||
uint32_t temp;
|
||||
uint8_t port_dword = (addr - mach->linear_base) & 0xfc;
|
||||
uint8_t port_dword = addr & 0xfc;
|
||||
|
||||
if (((mach->local_cntl & 0x20) || (mach->pci_cntl_reg & 0x80)) &&
|
||||
(((addr - mach->linear_base) >= ((mach->ap_size << 20) - 0x200)) && ((addr - mach->linear_base) < (mach->ap_size << 20)))) {
|
||||
if ((addr - mach->linear_base) & 0x100) {
|
||||
if (addr & 0x100) {
|
||||
temp = mach_accel_inw(0x02ee + (port_dword << 8), mach);
|
||||
temp |= (mach_accel_inw(0x02ee + (port_dword << 8) + 4, mach) << 8);
|
||||
} else {
|
||||
@@ -5374,9 +5374,9 @@ mach32_ap_readl(uint32_t addr, void *priv)
|
||||
}
|
||||
} else {
|
||||
if (dev->on)
|
||||
temp = mach32_readl_linear(addr - mach->linear_base, mach);
|
||||
temp = mach32_readl_linear(addr, mach);
|
||||
else
|
||||
temp = svga_readl_linear(addr - mach->linear_base, svga);
|
||||
temp = svga_readl_linear(addr, svga);
|
||||
|
||||
mach_log("Linear WORDL Read=%08x, ret=%08x, ON%d.\n", addr, temp, dev->on);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user