--- np2/i386c/ia32/cpu_mem.h 2004/03/12 13:34:08 1.5 +++ np2/i386c/ia32/cpu_mem.h 2012/06/18 14:30:27 1.16 @@ -1,7 +1,5 @@ -/* $Id: cpu_mem.h,v 1.5 2004/03/12 13:34:08 monaka Exp $ */ - /* - * Copyright (c) 2002-2003 NONAKA Kimihiro + * Copyright (c) 2002-2004 NONAKA Kimihiro * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -12,8 +10,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * 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 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -40,29 +36,50 @@ extern "C" { /* * memory access check */ -void cpu_memoryread_check(descriptor_t *sd, UINT32 madr, UINT length, int e); -void cpu_memorywrite_check(descriptor_t *sd, UINT32 madr, UINT length, int e); -void cpu_stack_push_check(UINT16 s, descriptor_t *sd, UINT32 madr, UINT length); -void cpu_stack_pop_check(UINT16 s, descriptor_t *sd, UINT32 madr, UINT length); -#define STACK_PUSH_CHECK(s, sd, addr, n) cpu_stack_push_check(s, sd, addr, n) -#define STACK_POP_CHECK(s, sd, addr, n) cpu_stack_pop_check(s, sd, addr, n) +void MEMCALL cpu_stack_push_check(UINT16 s, descriptor_t *sdp, UINT32 sp, UINT len, BOOL is32bit); +void MEMCALL cpu_stack_pop_check(UINT16 s, descriptor_t *sdp, UINT32 sp, UINT len, BOOL is32bit); +#define SS_PUSH_CHECK1(sp, len, is32bit) \ + cpu_stack_push_check(CPU_SS_INDEX, &CPU_SS_DESC, (sp), (len), (is32bit)) +#define SS_POP_CHECK1(sp, len, is32bit) \ + 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 */ -void MEMCALL cpu_vmemorywrite(int idx, UINT32 address, UINT8 value); -void MEMCALL cpu_vmemorywrite_w(int idx, UINT32 address, UINT16 value); -void MEMCALL cpu_vmemorywrite_d(int idx, UINT32 address, UINT32 value); -UINT8 MEMCALL cpu_vmemoryread(int idx, UINT32 address); -UINT16 MEMCALL cpu_vmemoryread_w(int idx, UINT32 address); -UINT32 MEMCALL cpu_vmemoryread_d(int idx, UINT32 address); +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_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); +#define cpu_vmemoryread(i,o) cpu_vmemoryread_b(i,o) +UINT16 MEMCALL cpu_vmemoryread_w(int idx, UINT32 offset); +UINT32 MEMCALL cpu_vmemoryread_d(int idx, UINT32 offset); +UINT64 MEMCALL cpu_vmemoryread_q(int idx, UINT32 offset); +REG80 MEMCALL cpu_vmemoryread_f(int idx, UINT32 offset); +UINT32 MEMCALL cpu_vmemory_RMW_b(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg); +UINT32 MEMCALL cpu_vmemory_RMW_w(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg); +UINT32 MEMCALL cpu_vmemory_RMW_d(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg); /* * code fetch */ -UINT8 MEMCALL cpu_codefetch(UINT32 madr); -UINT16 MEMCALL cpu_codefetch_w(UINT32 madr); -UINT32 MEMCALL cpu_codefetch_d(UINT32 madr); +UINT8 MEMCALL cpu_codefetch(UINT32 offset); +UINT16 MEMCALL cpu_codefetch_w(UINT32 offset); +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 }