|
|
| version 1.1, 2003/12/08 00:55:31 | version 1.5, 2004/03/12 13:34:08 |
|---|---|
| Line 30 | Line 30 |
| #ifndef IA32_CPU_CPU_MEM_H__ | #ifndef IA32_CPU_CPU_MEM_H__ |
| #define IA32_CPU_CPU_MEM_H__ | #define IA32_CPU_CPU_MEM_H__ |
| #include "memory.h" | |
| #include "segments.h" | #include "segments.h" |
| #ifdef __cplusplus | #ifdef __cplusplus |
| extern "C" { | extern "C" { |
| #endif | #endif |
| extern BYTE *cpumem; | |
| extern BYTE protectmem_size; | |
| extern DWORD extmem_size; | |
| int init_cpumem(BYTE usemem); | |
| /* | /* |
| * memory access check | * memory access check |
| */ | */ |
| void cpu_memoryread_check(descriptor_t* sd, DWORD madr, DWORD length, int e); | void cpu_memoryread_check(descriptor_t *sd, UINT32 madr, UINT length, int e); |
| void cpu_memorywrite_check(descriptor_t* sd, DWORD madr, DWORD length, int e); | void cpu_memorywrite_check(descriptor_t *sd, UINT32 madr, UINT length, int e); |
| BOOL cpu_stack_push_check(descriptor_t* sd, DWORD madr, DWORD length); | void cpu_stack_push_check(UINT16 s, descriptor_t *sd, UINT32 madr, UINT length); |
| BOOL cpu_stack_pop_check(descriptor_t* sd, DWORD madr, DWORD length); | void cpu_stack_pop_check(UINT16 s, descriptor_t *sd, UINT32 madr, UINT length); |
| #define CHECK_STACK_PUSH(sdp, addr, n) cpu_stack_push_check(sdp, addr, n) | #define STACK_PUSH_CHECK(s, sd, addr, n) cpu_stack_push_check(s, sd, addr, n) |
| #define CHECK_STACK_POP(sdp, addr, n) cpu_stack_pop_check(sdp, addr, n) | #define STACK_POP_CHECK(s, sd, addr, n) cpu_stack_pop_check(s, sd, addr, n) |
| /* | |
| * physcal address function | |
| */ | |
| void MEMCALL cpu_memorywrite(DWORD address, BYTE value); | |
| void MEMCALL cpu_memorywrite_w(DWORD address, WORD value); | |
| void MEMCALL cpu_memorywrite_d(DWORD address, DWORD value); | |
| BYTE MEMCALL cpu_memoryread(DWORD address); | |
| WORD MEMCALL cpu_memoryread_w(DWORD address); | |
| DWORD MEMCALL cpu_memoryread_d(DWORD address); | |
| /* | /* |
| * virtual address function | * virtual address function |
| */ | */ |
| void MEMCALL cpu_vmemorywrite(int idx, DWORD address, BYTE value); | void MEMCALL cpu_vmemorywrite(int idx, UINT32 address, UINT8 value); |
| void MEMCALL cpu_vmemorywrite_w(int idx, DWORD address, WORD value); | void MEMCALL cpu_vmemorywrite_w(int idx, UINT32 address, UINT16 value); |
| void MEMCALL cpu_vmemorywrite_d(int idx, DWORD address, DWORD value); | void MEMCALL cpu_vmemorywrite_d(int idx, UINT32 address, UINT32 value); |
| BYTE MEMCALL cpu_vmemoryread(int idx, DWORD address); | UINT8 MEMCALL cpu_vmemoryread(int idx, UINT32 address); |
| WORD MEMCALL cpu_vmemoryread_w(int idx, DWORD address); | UINT16 MEMCALL cpu_vmemoryread_w(int idx, UINT32 address); |
| DWORD MEMCALL cpu_vmemoryread_d(int idx, DWORD address); | UINT32 MEMCALL cpu_vmemoryread_d(int idx, UINT32 address); |
| /* | /* |
| * code fetch | * code fetch |
| */ | */ |
| BYTE MEMCALL cpu_codefetch(DWORD madr); | UINT8 MEMCALL cpu_codefetch(UINT32 madr); |
| WORD MEMCALL cpu_codefetch_w(DWORD madr); | UINT16 MEMCALL cpu_codefetch_w(UINT32 madr); |
| DWORD MEMCALL cpu_codefetch_d(DWORD madr); | UINT32 MEMCALL cpu_codefetch_d(UINT32 madr); |
| #ifdef __cplusplus | #ifdef __cplusplus |
| } | } |