Diff for /np2/i386c/ia32/cpu_mem.mcr between versions 1.8 and 1.10

version 1.8, 2012/01/08 18:26:10 version 1.10, 2012/06/18 14:30:27
Line 23 Line 23
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */   */
   
 #define VIRTUAL_ADDRESS_MEMORY_ACCESS_FUNCTION(width, valtype, length) \  #define DECLARE_VIRTUAL_ADDRESS_MEMORY_RW_FUNCTIONS(width, valtype, length) \
 valtype MEMCALL \  valtype MEMCALL \
 cpu_vmemoryread_##width(int idx, UINT32 offset) \  cpu_vmemoryread_##width(int idx, UINT32 offset) \
 { \  { \
Line 47  cpu_vmemoryread_##width(int idx, UINT32  Line 47  cpu_vmemoryread_##width(int idx, UINT32 
                 cpu_memoryread_check(sdp, offset, (length), \                  cpu_memoryread_check(sdp, offset, (length), \
                     CHOOSE_EXCEPTION(idx)); \                      CHOOSE_EXCEPTION(idx)); \
         } else if (!(sdp->flag & CPU_DESC_FLAG_WHOLEADR)) { \          } else if (!(sdp->flag & CPU_DESC_FLAG_WHOLEADR)) { \
                 if (!check_limit_upstairs(sdp, offset, (length))) \                  if (!check_limit_upstairs(sdp, offset, (length), SEG_IS_32BIT(sdp))) \
                         goto range_failure; \                          goto range_failure; \
         } \          } \
         return cpu_lmemoryread_##width(addr, CPU_PAGE_READ_DATA | CPU_STAT_USER_MODE); \          return cpu_lmemoryread_##width(addr, CPU_PAGE_READ_DATA | CPU_STAT_USER_MODE); \
Line 85  cpu_vmemorywrite_##width(int idx, UINT32 Line 85  cpu_vmemorywrite_##width(int idx, UINT32
                 cpu_memorywrite_check(sdp, offset, (length), \                  cpu_memorywrite_check(sdp, offset, (length), \
                     CHOOSE_EXCEPTION(idx)); \                      CHOOSE_EXCEPTION(idx)); \
         } else if (!(sdp->flag & CPU_DESC_FLAG_WHOLEADR)) { \          } else if (!(sdp->flag & CPU_DESC_FLAG_WHOLEADR)) { \
                 if (!check_limit_upstairs(sdp, offset, (length))) \                  if (!check_limit_upstairs(sdp, offset, (length), SEG_IS_32BIT(sdp))) \
                         goto range_failure; \                          goto range_failure; \
         } \          } \
         cpu_lmemorywrite_##width(addr, value, CPU_PAGE_WRITE_DATA | CPU_STAT_USER_MODE); \          cpu_lmemorywrite_##width(addr, value, CPU_PAGE_WRITE_DATA | CPU_STAT_USER_MODE); \
Line 96  range_failure: \ Line 96  range_failure: \
         exc = CHOOSE_EXCEPTION(idx); \          exc = CHOOSE_EXCEPTION(idx); \
 err: \  err: \
         EXCEPTION(exc, 0); \          EXCEPTION(exc, 0); \
 } \  }
 \  
   #define DECLARE_VIRTUAL_ADDRESS_MEMORY_RMW_FUNCTIONS(width, valtype, length) \
 UINT32 MEMCALL \  UINT32 MEMCALL \
 cpu_memory_access_va_RMW_##width(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg) \  cpu_vmemory_RMW_##width(int idx, UINT32 offset, UINT32 (CPUCALL *func)(UINT32, void *), void *arg) \
 { \  { \
         descriptor_t *sdp; \          descriptor_t *sdp; \
         UINT32 addr; \          UINT32 addr; \
Line 127  cpu_memory_access_va_RMW_##width(int idx Line 128  cpu_memory_access_va_RMW_##width(int idx
                 cpu_memorywrite_check(sdp, offset, (length), \                  cpu_memorywrite_check(sdp, offset, (length), \
                     CHOOSE_EXCEPTION(idx)); \                      CHOOSE_EXCEPTION(idx)); \
         } else if (!(sdp->flag & CPU_DESC_FLAG_WHOLEADR)) { \          } else if (!(sdp->flag & CPU_DESC_FLAG_WHOLEADR)) { \
                 if (!check_limit_upstairs(sdp, offset, (length))) \                  if (!check_limit_upstairs(sdp, offset, (length), SEG_IS_32BIT(sdp))) \
                         goto range_failure; \                          goto range_failure; \
         } \          } \
         return cpu_lmemory_RMW_##width(addr, func, arg); \          return cpu_lmemory_RMW_##width(addr, func, arg); \
 \  \
 range_failure: \  range_failure: \
         VERBOSE(("cpu_memory_access_va_RMW_" #width ": type = %d, offset = %08x, length = %d, limit = %08x", sdp->type, offset, length, sdp->u.seg.limit)); \          VERBOSE(("cpu_vmemory_RMW_" #width ": type = %d, offset = %08x, length = %d, limit = %08x", sdp->type, offset, length, sdp->u.seg.limit)); \
         exc = CHOOSE_EXCEPTION(idx); \          exc = CHOOSE_EXCEPTION(idx); \
 err: \  err: \
         EXCEPTION(exc, 0); \          EXCEPTION(exc, 0); \

Removed from v.1.8  
changed lines
  Added in v.1.10


RetroPC.NET-CVS <cvs@retropc.net>