More cleanups in mem.ch, removing old and/or unneeded stuff.
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
* Re-worked version based on the 82C235 datasheet and errata.
|
* Re-worked version based on the 82C235 datasheet and errata.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_at_scat.c 1.0.9 2018/06/12
|
* Version: @(#)m_at_scat.c 1.0.10 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Original by GreatPsycho for PCem.
|
* Original by GreatPsycho for PCem.
|
||||||
@@ -1349,7 +1349,6 @@ scat_init(void)
|
|||||||
scat_port_92 = 0;
|
scat_port_92 = 0;
|
||||||
|
|
||||||
mem_mapping_disable(&ram_low_mapping);
|
mem_mapping_disable(&ram_low_mapping);
|
||||||
mem_mapping_disable(&ram_mid_mapping);
|
|
||||||
mem_mapping_disable(&ram_high_mapping);
|
mem_mapping_disable(&ram_high_mapping);
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
mem_mapping_disable(&bios_mapping[i]);
|
mem_mapping_disable(&bios_mapping[i]);
|
||||||
@@ -1372,8 +1371,6 @@ scat_init(void)
|
|||||||
mem_mapping_add(&scat_ems_mapping[i], (i + (i >= 24 ? 28 : 16)) << 14, 0x04000, mem_read_scatb, mem_read_scatw, mem_read_scatl, mem_write_scatb, mem_write_scatw, mem_write_scatl, ram + ((i + (i >= 24 ? 28 : 16)) << 14), 0, &scat_stat[i]);
|
mem_mapping_add(&scat_ems_mapping[i], (i + (i >= 24 ? 28 : 16)) << 14, 0x04000, mem_read_scatb, mem_read_scatw, mem_read_scatl, mem_write_scatb, mem_write_scatw, mem_write_scatl, ram + ((i + (i >= 24 ? 28 : 16)) << 14), 0, &scat_stat[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=4;i<10;i++) isram[i] = 0;
|
|
||||||
|
|
||||||
for (i = (scat_regs[SCAT_VERSION] < 4 ? 0 : 8); i < 16; i++) {
|
for (i = (scat_regs[SCAT_VERSION] < 4 ? 0 : 8); i < 16; i++) {
|
||||||
mem_mapping_add(&scat_high_mapping[i], (i << 14) + 0xFC0000, 0x04000, mem_read_bios, mem_read_biosw, mem_read_biosl, mem_write_null, mem_write_nullw, mem_write_nulll, rom + ((i << 14) & biosmask), 0, NULL);
|
mem_mapping_add(&scat_high_mapping[i], (i << 14) + 0xFC0000, 0x04000, mem_read_bios, mem_read_biosw, mem_read_biosl, mem_write_null, mem_write_nullw, mem_write_nulll, rom + ((i << 14) & biosmask), 0, NULL);
|
||||||
mem_mapping_enable(&scat_high_mapping[i]);
|
mem_mapping_enable(&scat_high_mapping[i]);
|
||||||
@@ -1425,7 +1422,6 @@ scatsx_init(void)
|
|||||||
scat_port_92 = 0;
|
scat_port_92 = 0;
|
||||||
|
|
||||||
mem_mapping_disable(&ram_low_mapping);
|
mem_mapping_disable(&ram_low_mapping);
|
||||||
mem_mapping_disable(&ram_mid_mapping);
|
|
||||||
mem_mapping_disable(&ram_high_mapping);
|
mem_mapping_disable(&ram_high_mapping);
|
||||||
for (i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
mem_mapping_disable(&bios_mapping[i]);
|
mem_mapping_disable(&bios_mapping[i]);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Implementation of MCA-based PS/2 machines.
|
* Implementation of MCA-based PS/2 machines.
|
||||||
*
|
*
|
||||||
* Version: @(#)m_ps2_mca.c 1.0.15 2018/05/06
|
* Version: @(#)m_ps2_mca.c 1.0.16 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -1048,10 +1048,13 @@ static void mem_encoding_write_cached(uint16_t addr, uint8_t val, void *p)
|
|||||||
ps2.pending_cache_miss = 1;
|
ps2.pending_cache_miss = 1;
|
||||||
if ((val & 0x21) == 0x01 && (old & 0x21) != 0x01)
|
if ((val & 0x21) == 0x01 && (old & 0x21) != 0x01)
|
||||||
ps2_cache_clean();
|
ps2_cache_clean();
|
||||||
|
#if 1
|
||||||
|
// FIXME: Look into this!!!
|
||||||
if (val & 0x01)
|
if (val & 0x01)
|
||||||
ram_mid_mapping.flags |= MEM_MAPPING_ROM;
|
ram_mid_mapping.flags |= MEM_MAPPING_ROM;
|
||||||
else
|
else
|
||||||
ram_mid_mapping.flags &= ~MEM_MAPPING_ROM;
|
ram_mid_mapping.flags &= ~MEM_MAPPING_ROM;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// pclog("mem_encoding_write: addr=%02x val=%02x %04x:%04x %02x %02x\n", addr, val, CS,cpu_state.pc, ps2.mem_regs[1],ps2.mem_regs[2]);
|
// pclog("mem_encoding_write: addr=%02x val=%02x %04x:%04x %02x %02x\n", addr, val, CS,cpu_state.pc, ps2.mem_regs[1],ps2.mem_regs[2]);
|
||||||
|
|||||||
49
src/mem.c
49
src/mem.c
@@ -12,7 +12,7 @@
|
|||||||
* the DYNAMIC_TABLES=1 enables this. Will eventually go
|
* the DYNAMIC_TABLES=1 enables this. Will eventually go
|
||||||
* away, either way...
|
* away, either way...
|
||||||
*
|
*
|
||||||
* Version: @(#)mem.c 1.0.16 2018/08/17
|
* Version: @(#)mem.c 1.0.16 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -69,11 +69,12 @@
|
|||||||
|
|
||||||
|
|
||||||
mem_mapping_t base_mapping,
|
mem_mapping_t base_mapping,
|
||||||
ram_low_mapping,
|
ram_low_mapping, /* 0..640K mapping */
|
||||||
ram_high_mapping,
|
#if 1
|
||||||
ram_mid_mapping,
|
ram_mid_mapping,
|
||||||
ram_remapped_mapping,
|
#endif
|
||||||
ram_split_mapping,
|
ram_remapped_mapping, /* 640..1024K mapping */
|
||||||
|
ram_high_mapping, /* 1024K+ mapping */
|
||||||
bios_mapping[8],
|
bios_mapping[8],
|
||||||
bios_high_mapping[8],
|
bios_high_mapping[8],
|
||||||
romext_mapping;
|
romext_mapping;
|
||||||
@@ -82,8 +83,6 @@ page_t *pages, /* RAM page table */
|
|||||||
**page_lookup; /* pagetable lookup */
|
**page_lookup; /* pagetable lookup */
|
||||||
uint32_t pages_sz = 0; /* #pages in table */
|
uint32_t pages_sz = 0; /* #pages in table */
|
||||||
|
|
||||||
uint8_t isram[0x10000];
|
|
||||||
|
|
||||||
uint8_t *ram; /* the virtual RAM */
|
uint8_t *ram; /* the virtual RAM */
|
||||||
uint32_t rammask;
|
uint32_t rammask;
|
||||||
|
|
||||||
@@ -114,8 +113,6 @@ int cachesize = 256;
|
|||||||
|
|
||||||
uint32_t ram_mapped_addr[64];
|
uint32_t ram_mapped_addr[64];
|
||||||
|
|
||||||
int split_mapping_enabled = 0;
|
|
||||||
|
|
||||||
uint32_t get_phys_virt,
|
uint32_t get_phys_virt,
|
||||||
get_phys_phys;
|
get_phys_phys;
|
||||||
|
|
||||||
@@ -1580,8 +1577,6 @@ mem_reset(void)
|
|||||||
{
|
{
|
||||||
uint32_t c, m;
|
uint32_t c, m;
|
||||||
|
|
||||||
split_mapping_enabled = 0;
|
|
||||||
|
|
||||||
/* Free the ROM memory and reset size mask. */
|
/* Free the ROM memory and reset size mask. */
|
||||||
if (rom != NULL) {
|
if (rom != NULL) {
|
||||||
free(rom);
|
free(rom);
|
||||||
@@ -1676,14 +1671,6 @@ pclog("MEM: reset: new pages=%08lx, pages_sz=%i\n", pages, pages_sz);
|
|||||||
/* Initialize the tables. */
|
/* Initialize the tables. */
|
||||||
resetreadlookup();
|
resetreadlookup();
|
||||||
|
|
||||||
memset(isram, 0x00, sizeof(isram));
|
|
||||||
for (c = 0; c < ((uint32_t)mem_size / 64); c++) {
|
|
||||||
isram[c] = 1;
|
|
||||||
if ((c >= 0xa && c <= 0xf) ||
|
|
||||||
(cpu_16bitbus && c >= 0xfe && c <= 0xff))
|
|
||||||
isram[c] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(_mem_read_b, 0x00, sizeof(_mem_read_b));
|
memset(_mem_read_b, 0x00, sizeof(_mem_read_b));
|
||||||
memset(_mem_read_w, 0x00, sizeof(_mem_read_w));
|
memset(_mem_read_w, 0x00, sizeof(_mem_read_w));
|
||||||
memset(_mem_read_l, 0x00, sizeof(_mem_read_l));
|
memset(_mem_read_l, 0x00, sizeof(_mem_read_l));
|
||||||
@@ -1727,11 +1714,13 @@ pclog("MEM: reset: new pages=%08lx, pages_sz=%i\n", pages, pages_sz);
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 1
|
||||||
if (mem_size > 768)
|
if (mem_size > 768)
|
||||||
mem_mapping_add(&ram_mid_mapping, 0xc0000, 0x40000,
|
mem_mapping_add(&ram_mid_mapping, 0xc0000, 0x40000,
|
||||||
mem_read_ram,mem_read_ramw,mem_read_raml,
|
mem_read_ram,mem_read_ramw,mem_read_raml,
|
||||||
mem_write_ram,mem_write_ramw,mem_write_raml,
|
mem_write_ram,mem_write_ramw,mem_write_raml,
|
||||||
ram + 0xc0000, MEM_MAPPING_INTERNAL, NULL);
|
ram + 0xc0000, MEM_MAPPING_INTERNAL, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (romset == ROM_IBMPS1_2011)
|
if (romset == ROM_IBMPS1_2011)
|
||||||
mem_mapping_add(&romext_mapping, 0xc8000, 0x08000,
|
mem_mapping_add(&romext_mapping, 0xc8000, 0x08000,
|
||||||
@@ -1744,12 +1733,6 @@ pclog("MEM: reset: new pages=%08lx, pages_sz=%i\n", pages, pages_sz);
|
|||||||
ram + (1 << 20), MEM_MAPPING_INTERNAL, NULL);
|
ram + (1 << 20), MEM_MAPPING_INTERNAL, NULL);
|
||||||
mem_mapping_disable(&ram_remapped_mapping);
|
mem_mapping_disable(&ram_remapped_mapping);
|
||||||
|
|
||||||
mem_mapping_add(&ram_split_mapping, mem_size * 1024, 384 * 1024,
|
|
||||||
mem_read_ram, mem_read_ramw, mem_read_raml,
|
|
||||||
mem_write_ram,mem_write_ramw,mem_write_raml,
|
|
||||||
ram + (1 << 20), MEM_MAPPING_INTERNAL, NULL);
|
|
||||||
mem_mapping_disable(&ram_split_mapping);
|
|
||||||
|
|
||||||
mem_a20_init();
|
mem_a20_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1783,25 +1766,23 @@ mem_init(void)
|
|||||||
static void
|
static void
|
||||||
mem_remap_top(int max_size)
|
mem_remap_top(int max_size)
|
||||||
{
|
{
|
||||||
uint32_t c;
|
|
||||||
|
|
||||||
if (mem_size > 640) {
|
|
||||||
uint32_t start = (mem_size >= 1024) ? mem_size : 1024;
|
uint32_t start = (mem_size >= 1024) ? mem_size : 1024;
|
||||||
int size = mem_size - 640;
|
int size = mem_size - 640;
|
||||||
|
|
||||||
|
pclog("MEM: remapping top %iKB (mem=%i)\n", max_size, mem_size);
|
||||||
|
if (mem_size <= 640) return;
|
||||||
|
|
||||||
if (size > max_size)
|
if (size > max_size)
|
||||||
size = max_size;
|
size = max_size;
|
||||||
|
|
||||||
for (c = (start / 64); c < ((start + size - 1) / 64); c++)
|
|
||||||
isram[c] = 1;
|
|
||||||
|
|
||||||
mem_set_mem_state(start * 1024, size * 1024,
|
mem_set_mem_state(start * 1024, size * 1024,
|
||||||
MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||||
mem_mapping_set_addr(&ram_remapped_mapping,
|
mem_mapping_set_addr(&ram_remapped_mapping, start * 1024, size * 1024);
|
||||||
start * 1024, size * 1024);
|
#if 0
|
||||||
mem_mapping_set_exec(&ram_split_mapping, ram + (start * 1024));
|
mem_mapping_set_exec(&ram_split_mapping, ram + (start * 1024));
|
||||||
|
#endif
|
||||||
|
|
||||||
flushmmucache();
|
flushmmucache();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
27
src/mem.h
27
src/mem.h
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Definitions for the memory interface.
|
* Definitions for the memory interface.
|
||||||
*
|
*
|
||||||
* Version: @(#)mem.h 1.0.6 2018/08/17
|
* Version: @(#)mem.h 1.0.8 2018/08/20
|
||||||
*
|
*
|
||||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||||
* Sarah Walker, <tommowalker@tommowalker.co.uk>
|
* Sarah Walker, <tommowalker@tommowalker.co.uk>
|
||||||
@@ -118,10 +118,11 @@ extern uint32_t ram_mapped_addr[64];
|
|||||||
|
|
||||||
mem_mapping_t base_mapping,
|
mem_mapping_t base_mapping,
|
||||||
ram_low_mapping,
|
ram_low_mapping,
|
||||||
ram_high_mapping,
|
#if 1
|
||||||
ram_mid_mapping,
|
ram_mid_mapping,
|
||||||
|
#endif
|
||||||
ram_remapped_mapping,
|
ram_remapped_mapping,
|
||||||
ram_split_mapping,
|
ram_high_mapping,
|
||||||
bios_mapping[8],
|
bios_mapping[8],
|
||||||
bios_high_mapping[8],
|
bios_high_mapping[8],
|
||||||
romext_mapping;
|
romext_mapping;
|
||||||
@@ -140,7 +141,6 @@ extern int readlnum,
|
|||||||
|
|
||||||
extern int nopageerrors;
|
extern int nopageerrors;
|
||||||
extern int memspeed[11];
|
extern int memspeed[11];
|
||||||
extern uint8_t isram[0x10000];
|
|
||||||
|
|
||||||
extern int mmu_perm;
|
extern int mmu_perm;
|
||||||
|
|
||||||
@@ -179,9 +179,10 @@ extern uint32_t mmutranslatereal(uint32_t addr, int rw);
|
|||||||
extern void addreadlookup(uint32_t virt, uint32_t phys);
|
extern void addreadlookup(uint32_t virt, uint32_t phys);
|
||||||
extern void addwritelookup(uint32_t virt, uint32_t phys);
|
extern void addwritelookup(uint32_t virt, uint32_t phys);
|
||||||
|
|
||||||
extern void mem_mapping_del(mem_mapping_t *map);
|
|
||||||
|
|
||||||
extern void mem_mapping_add(mem_mapping_t *map,
|
extern void mem_mapping_del(mem_mapping_t *);
|
||||||
|
|
||||||
|
extern void mem_mapping_add(mem_mapping_t *,
|
||||||
uint32_t base,
|
uint32_t base,
|
||||||
uint32_t size,
|
uint32_t size,
|
||||||
uint8_t (*read_b)(uint32_t addr, void *p),
|
uint8_t (*read_b)(uint32_t addr, void *p),
|
||||||
@@ -194,7 +195,7 @@ extern void mem_mapping_add(mem_mapping_t *map,
|
|||||||
uint32_t flags,
|
uint32_t flags,
|
||||||
void *p);
|
void *p);
|
||||||
|
|
||||||
extern void mem_mapping_set_handler(mem_mapping_t *map,
|
extern void mem_mapping_set_handler(mem_mapping_t *,
|
||||||
uint8_t (*read_b)(uint32_t addr, void *p),
|
uint8_t (*read_b)(uint32_t addr, void *p),
|
||||||
uint16_t (*read_w)(uint32_t addr, void *p),
|
uint16_t (*read_w)(uint32_t addr, void *p),
|
||||||
uint32_t (*read_l)(uint32_t addr, void *p),
|
uint32_t (*read_l)(uint32_t addr, void *p),
|
||||||
@@ -202,15 +203,15 @@ extern void mem_mapping_set_handler(mem_mapping_t *map,
|
|||||||
void (*write_w)(uint32_t addr, uint16_t val, void *p),
|
void (*write_w)(uint32_t addr, uint16_t val, void *p),
|
||||||
void (*write_l)(uint32_t addr, uint32_t val, void *p));
|
void (*write_l)(uint32_t addr, uint32_t val, void *p));
|
||||||
|
|
||||||
extern void mem_mapping_set_p(mem_mapping_t *map, void *p);
|
extern void mem_mapping_set_p(mem_mapping_t *, void *p);
|
||||||
|
|
||||||
extern void mem_mapping_set_dev(mem_mapping_t *map, void *dev);
|
extern void mem_mapping_set_dev(mem_mapping_t *, void *dev);
|
||||||
|
|
||||||
extern void mem_mapping_set_addr(mem_mapping_t *map,
|
extern void mem_mapping_set_addr(mem_mapping_t *,
|
||||||
uint32_t base, uint32_t size);
|
uint32_t base, uint32_t size);
|
||||||
extern void mem_mapping_set_exec(mem_mapping_t *map, uint8_t *exec);
|
extern void mem_mapping_set_exec(mem_mapping_t *, uint8_t *exec);
|
||||||
extern void mem_mapping_disable(mem_mapping_t *mapg);
|
extern void mem_mapping_disable(mem_mapping_t *);
|
||||||
extern void mem_mapping_enable(mem_mapping_t *map);
|
extern void mem_mapping_enable(mem_mapping_t *);
|
||||||
|
|
||||||
extern void mem_set_mem_state(uint32_t base, uint32_t size, int state);
|
extern void mem_set_mem_state(uint32_t base, uint32_t size, int state);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user