diff --git a/src/chipset/scat.c b/src/chipset/scat.c index aa0c5511a..fe6c033cf 100644 --- a/src/chipset/scat.c +++ b/src/chipset/scat.c @@ -66,15 +66,17 @@ typedef struct ems_page_t { } ems_page_t; typedef struct scat_t { - int type; + uint8_t max_reg; + uint8_t reg_2xA; - int indx; - uint8_t regs[256]; - uint8_t reg_2xA; + uint8_t regs[256]; uint32_t xms_bound; - int external_is_RAS; + int type; + int indx; + + int external_is_RAS; ems_page_t null_page; ems_page_t page[32]; @@ -1233,7 +1235,8 @@ scat_in(uint16_t port, void *priv) break; default: - ret = dev->regs[dev->indx]; + if (dev->index <= dev->max_reg) + ret = dev->regs[dev->indx]; break; } break; @@ -1393,6 +1396,8 @@ scat_init(const device_t *info) sx = (dev->type == 32) ? 1 : 0; + dev->max_reg = sx ? 0x64 : 0x4f; + for (uint32_t i = 0; i < sizeof(dev->regs); i++) dev->regs[i] = 0xff;