|
|
| version 1.6, 2004/01/23 14:33:26 | version 1.7, 2004/01/25 07:53:08 |
|---|---|
| Line 31 | Line 31 |
| #include "cpu.h" | #include "cpu.h" |
| #include "memory.h" | #include "memory.h" |
| BYTE *cpumem = 0; | // static BYTE *cpumem = 0; |
| DWORD extmem_size = 0; | // static DWORD extmem_size = 0; |
| BYTE protectmem_size = 0; | |
| #define cpumem i386core.e.ext | |
| #define extmem_size i386core.e.extsize | |
| /* | /* |
| Line 41 BYTE protectmem_size = 0; | Line 43 BYTE protectmem_size = 0; |
| */ | */ |
| int | int |
| init_cpumem(BYTE usemem) | init_cpumem(UINT8 usemem) |
| { | { |
| DWORD size; | UINT32 size; |
| if (usemem > 13) | |
| usemem = 13; | |
| size = usemem << 20; | size = usemem << 20; |
| if (size >= (LOWMEM - 0x100000)) { | |
| if (extmem_size != size - (LOWMEM - 0x100000)) { | size -= (LOWMEM - 0x100000); |
| } | |
| else { | |
| size = 0; | |
| } | |
| if (extmem_size != size) { | |
| if (cpumem) { | if (cpumem) { |
| free(cpumem); | free(cpumem); |
| cpumem = 0; | cpumem = 0; |
| } | } |
| if (size <= LOWMEM - 0x100000) { | if (size) { |
| extmem_size = 0; | cpumem = (BYTE *)malloc(size); |
| cpumem = 0; | |
| } else { | |
| extmem_size = size - (LOWMEM - 0x100000); | |
| cpumem = (BYTE *)malloc(extmem_size); | |
| if (cpumem == NULL) { | if (cpumem == NULL) { |
| protectmem_size = 0; | size = 0; |
| return FAILURE; | |
| } | } |
| memset(cpumem, 0, extmem_size); | |
| } | } |
| extmem_size = size; | |
| } | } |
| protectmem_size = usemem; | |
| return SUCCESS; | return SUCCESS; |
| } | } |