Implement PIIX4 power management. Soft power off is currently 'implemented'
by killing the emulator.
This commit is contained in:
parent
0cbbd22c88
commit
8f04c11a76
10 changed files with 493 additions and 190 deletions
10
src/mem.c
10
src/mem.c
|
|
@ -51,6 +51,9 @@ uint64_t *byte_code_present_mask;
|
|||
|
||||
uint32_t mem_logical_addr;
|
||||
|
||||
void (*smram_enable)(void);
|
||||
void (*smram_disable)(void);
|
||||
|
||||
int mmuflush=0;
|
||||
int mmu_perm=4;
|
||||
|
||||
|
|
@ -1420,6 +1423,9 @@ void mem_init()
|
|||
page_lookup = malloc((1 << 20) * sizeof(page_t *));
|
||||
|
||||
memset(ff_array, 0xff, sizeof(ff_array));
|
||||
|
||||
smram_enable = NULL;
|
||||
smram_disable = NULL;
|
||||
}
|
||||
|
||||
void mem_alloc()
|
||||
|
|
@ -1462,7 +1468,7 @@ void mem_alloc()
|
|||
memset(_mem_state, 0, sizeof(_mem_state));
|
||||
|
||||
mem_set_mem_state(0x000000, (mem_size > 640) ? 0xa0000 : mem_size * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
|
||||
mem_set_mem_state(0x0c0000, 0x40000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
|
||||
mem_set_mem_state(0x0a0000, 0x60000, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
|
||||
|
||||
mem_mapping_add(&ram_low_mapping, 0x00000, (mem_size > 640) ? 0xa0000 : mem_size * 1024, mem_read_ram, mem_read_ramw, mem_read_raml, mem_write_ram, mem_write_ramw, mem_write_raml, ram, MEM_MAPPING_INTERNAL, NULL);
|
||||
if (mem_size > 1024)
|
||||
|
|
@ -1479,7 +1485,7 @@ void mem_alloc()
|
|||
}
|
||||
}
|
||||
if (mem_size > 768)
|
||||
mem_mapping_add(&ram_mid_mapping, 0xc0000, 0x40000, mem_read_ram, mem_read_ramw, mem_read_raml, mem_write_ram, mem_write_ramw, mem_write_raml, ram + 0xc0000, MEM_MAPPING_INTERNAL, NULL);
|
||||
mem_mapping_add(&ram_mid_mapping, 0xa0000, 0x60000, mem_read_ram, mem_read_ramw, mem_read_raml, mem_write_ram, mem_write_ramw, mem_write_raml, ram + 0xa0000, MEM_MAPPING_INTERNAL, NULL);
|
||||
|
||||
if (romset == ROM_IBMPS1_2011)
|
||||
mem_mapping_add(&romext_mapping, 0xc8000, 0x08000, mem_read_romext, mem_read_romextw, mem_read_romextl, NULL, NULL, NULL, romext, 0, NULL);
|
||||
|
|
|
|||
Loading…
Reference in a new issue