From baee7c15301ec35715a00496ca2907f705724746 Mon Sep 17 00:00:00 2001 From: OBattler Date: Tue, 20 Oct 2020 21:53:47 +0200 Subject: [PATCH] And fixed them again, this time properly (verified by testing). --- src/chipset/via_apollo.c | 2 +- src/mem/sst_flash.c | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/chipset/via_apollo.c b/src/chipset/via_apollo.c index b089c2c92..e85bc5191 100644 --- a/src/chipset/via_apollo.c +++ b/src/chipset/via_apollo.c @@ -56,7 +56,7 @@ apollo_map(uint32_t addr, uint32_t size, int state) mem_set_mem_state_both(addr, size, MEM_READ_EXTANY | MEM_WRITE_INTERNAL); break; case 2: - mem_set_mem_state_both(addr, size, MEM_READ_INTERNAL | MEM_WRITE_DISABLED); + mem_set_mem_state_both(addr, size, MEM_READ_INTERNAL | MEM_WRITE_EXTANY); break; case 3: mem_set_mem_state_both(addr, size, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL); diff --git a/src/mem/sst_flash.c b/src/mem/sst_flash.c index d9f513887..646412f94 100644 --- a/src/mem/sst_flash.c +++ b/src/mem/sst_flash.c @@ -155,14 +155,13 @@ sst_page_write(void *priv) sst_t *dev = (sst_t *) priv; int i; - if (dev->last_addr == 0xffffffff) - return; - - dev->page_base = dev->last_addr & dev->page_mask; - for (i = 0; i < 128; i++) { - if (dev->page_dirty[i]) { - dev->array[dev->page_base + i] = dev->page_buffer[i]; - dev->dirty |= 1; + if (dev->last_addr != 0xffffffff) { + dev->page_base = dev->last_addr & dev->page_mask; + for (i = 0; i < 128; i++) { + if (dev->page_dirty[i]) { + dev->array[dev->page_base + i] = dev->page_buffer[i]; + dev->dirty |= 1; + } } } dev->page_bytes = 0; @@ -222,8 +221,8 @@ sst_write(uint32_t addr, uint8_t val, void *p) dev->page_bytes = 0; dev->command_state = 7; sst_buf_write(dev, addr, val); - } - dev->command_state = 0; + } else + dev->command_state = 0; } break; case 1: