| version 1.6, 2004/03/23 15:29:34 | version 1.16, 2012/06/18 14:30:27 | 
| Line 1 | Line 1 | 
 | /*      $Id$    */ |  | 
 |  |  | 
 | /* | /* | 
 | * Copyright (c) 2002-2004 NONAKA Kimihiro | * Copyright (c) 2002-2004 NONAKA Kimihiro | 
 | * All rights reserved. | * All rights reserved. | 
| Line 12 | Line 10 | 
 | * 2. Redistributions in binary form must reproduce the above copyright | * 2. Redistributions in binary form must reproduce the above copyright | 
 | *    notice, this list of conditions and the following disclaimer in the | *    notice, this list of conditions and the following disclaimer in the | 
 | *    documentation and/or other materials provided with the distribution. | *    documentation and/or other materials provided with the distribution. | 
 | * 3. The name of the author may not be used to endorse or promote products |  | 
 | *    derived from this software without specific prior written permission. |  | 
 | * | * | 
 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 
 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 
| Line 40  extern "C" { | Line 36  extern "C" { | 
 | /* | /* | 
 | * memory access check | * memory access check | 
 | */ | */ | 
| void cpu_memoryread_check(descriptor_t *sd, UINT32 madr, UINT length, int e); | void MEMCALL cpu_stack_push_check(UINT16 s, descriptor_t *sdp, UINT32 sp, UINT len, BOOL is32bit); | 
| void cpu_memorywrite_check(descriptor_t *sd, UINT32 madr, UINT length, int e); | void MEMCALL cpu_stack_pop_check(UINT16 s, descriptor_t *sdp, UINT32 sp, UINT len, BOOL is32bit); | 
| void cpu_stack_push_check(UINT16 s, descriptor_t *sd, UINT32 madr, UINT length); | #define SS_PUSH_CHECK1(sp, len, is32bit) \ | 
| void cpu_stack_pop_check(UINT16 s, descriptor_t *sd, UINT32 madr, UINT length); | cpu_stack_push_check(CPU_SS_INDEX, &CPU_SS_DESC, (sp), (len), (is32bit)) | 
| #define STACK_PUSH_CHECK(s, sd, addr, n) cpu_stack_push_check(s, sd, addr, n) | #define SS_POP_CHECK1(sp, len, is32bit) \ | 
| #define STACK_POP_CHECK(s, sd, addr, n) cpu_stack_pop_check(s, sd, addr, n) | cpu_stack_pop_check(CPU_SS_INDEX, &CPU_SS_DESC, (sp), (len), (is32bit)) | 
|  | #define SS_PUSH_CHECK(sp, len) \ | 
|  | SS_PUSH_CHECK1((sp), (len), CPU_SS_DESC.d) | 
|  | #define SS_POP_CHECK(sp, len) \ | 
|  | SS_POP_CHECK1((sp), (len), CPU_SS_DESC.d) | 
 |  |  | 
 | /* | /* | 
 | * virtual address function | * virtual address function | 
 | */ | */ | 
 | void MEMCALL cpu_vmemorywrite_b(int idx, UINT32 offset, UINT8 value); | void MEMCALL cpu_vmemorywrite_b(int idx, UINT32 offset, UINT8 value); | 
 |  | #define cpu_vmemorywrite(i,o,v)         cpu_vmemorywrite_b(i,o,v) | 
 | void MEMCALL cpu_vmemorywrite_w(int idx, UINT32 offset, UINT16 value); | void MEMCALL cpu_vmemorywrite_w(int idx, UINT32 offset, UINT16 value); | 
 | void MEMCALL cpu_vmemorywrite_d(int idx, UINT32 offset, UINT32 value); | void MEMCALL cpu_vmemorywrite_d(int idx, UINT32 offset, UINT32 value); | 
 |  | void MEMCALL cpu_vmemorywrite_q(int idx, UINT32 offset, UINT64 value); | 
 |  | void MEMCALL cpu_vmemorywrite_f(int idx, UINT32 offset, const REG80 *value); | 
 | UINT8 MEMCALL cpu_vmemoryread_b(int idx, UINT32 offset); | UINT8 MEMCALL cpu_vmemoryread_b(int idx, UINT32 offset); | 
 |  | #define cpu_vmemoryread(i,o)            cpu_vmemoryread_b(i,o) | 
 | UINT16 MEMCALL cpu_vmemoryread_w(int idx, UINT32 offset); | UINT16 MEMCALL cpu_vmemoryread_w(int idx, UINT32 offset); | 
 | UINT32 MEMCALL cpu_vmemoryread_d(int idx, UINT32 offset); | UINT32 MEMCALL cpu_vmemoryread_d(int idx, UINT32 offset); | 
| UINT32 MEMCALL cpu_memory_access_va_RMW_b(int idx, UINT32 offset, UINT32 (*func)(UINT32, void *), void *arg); | UINT64 MEMCALL cpu_vmemoryread_q(int idx, UINT32 offset); | 
| UINT32 MEMCALL cpu_memory_access_va_RMW_w(int idx, UINT32 offset, UINT32 (*func)(UINT32, void *), void *arg); | REG80 MEMCALL cpu_vmemoryread_f(int idx, UINT32 offset); | 
| UINT32 MEMCALL cpu_memory_access_va_RMW_d(int idx, UINT32 offset, UINT32 (*func)(UINT32, void *), void *arg); | UINT32 MEMCALL cpu_vmemory_RMW_b(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg); | 
| #define cpu_vmemorywrite(i,o,v)                 cpu_vmemorywrite_b(i,o,v) | UINT32 MEMCALL cpu_vmemory_RMW_w(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg); | 
| #define cpu_vmemoryread(i,o)                    cpu_vmemoryread_b(i,o) | UINT32 MEMCALL cpu_vmemory_RMW_d(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg); | 
| #define cpu_memory_access_va_RMW(i,o,f,a)       cpu_memory_access_va_RMW_b(i,o,f,a) |  | 
 |  |  | 
 | /* | /* | 
 | * code fetch | * code fetch | 
 | */ | */ | 
| UINT8 MEMCALL cpu_codefetch(UINT32 madr); | UINT8 MEMCALL cpu_codefetch(UINT32 offset); | 
| UINT16 MEMCALL cpu_codefetch_w(UINT32 madr); | UINT16 MEMCALL cpu_codefetch_w(UINT32 offset); | 
| UINT32 MEMCALL cpu_codefetch_d(UINT32 madr); | UINT32 MEMCALL cpu_codefetch_d(UINT32 offset); | 
|  |  | 
|  | /* | 
|  | * additional physical address function | 
|  | */ | 
|  | UINT64 MEMCALL cpu_memoryread_q(UINT32 paddr); | 
|  | REG80 MEMCALL cpu_memoryread_f(UINT32 paddr); | 
|  | void MEMCALL cpu_memorywrite_q(UINT32 paddr, UINT64 value); | 
|  | void MEMCALL cpu_memorywrite_f(UINT32 paddr, const REG80 *value); | 
 |  |  | 
 | #ifdef __cplusplus | #ifdef __cplusplus | 
 | } | } |