--- np2/i386c/memory.h 2005/03/18 06:49:17 1.16 +++ np2/i386c/memory.h 2012/01/29 14:53:54 1.20 @@ -10,10 +10,6 @@ #define MEMCALL #endif -#ifndef GCC_ATTR_REGPARM -#define GCC_ATTR_REGPARM -#endif - // 000000-0fffff メインメモリ // 100000-10ffef HMA // 110000-193fff FONT-ROM/RAM @@ -54,81 +50,97 @@ extern "C" { extern UINT8 mem[0x200000]; -void MEMCALL i286_memorymap(UINT type); -void MEMCALL i286_vram_dispatch(UINT operate); +void MEMCALL memm_arch(UINT type); +void MEMCALL memm_vram(UINT operate); + +REG8 MEMCALL memp_read8(UINT32 address); +REG16 MEMCALL memp_read16(UINT32 address); +UINT32 MEMCALL memp_read32(UINT32 address); +void MEMCALL memp_write8(UINT32 address, REG8 value); +void MEMCALL memp_write16(UINT32 address, REG16 value); +void MEMCALL memp_write32(UINT32 address, UINT32 value); +void MEMCALL memp_reads(UINT32 address, void *dat, UINT leng); +void MEMCALL memp_writes(UINT32 address, const void *dat, UINT leng); + +REG8 MEMCALL meml_read8(UINT32 address); +REG16 MEMCALL meml_read16(UINT32 address); +UINT32 MEMCALL meml_read32(UINT32 address); +void MEMCALL meml_write8(UINT32 address, REG8 dat); +void MEMCALL meml_write16(UINT32 address, REG16 dat); +void MEMCALL meml_write32(UINT32 address, UINT32 dat); +void MEMCALL meml_reads(UINT32 address, void *dat, UINT leng); +void MEMCALL meml_writes(UINT32 address, const void *dat, UINT leng); + +REG8 MEMCALL memr_read8(UINT seg, UINT off); +REG16 MEMCALL memr_read16(UINT seg, UINT off); +UINT32 MEMCALL memr_read32(UINT seg, UINT off); +void MEMCALL memr_write8(UINT seg, UINT off, REG8 dat); +void MEMCALL memr_write16(UINT seg, UINT off, REG16 dat); +void MEMCALL memr_write32(UINT seg, UINT off, UINT32 dat); +void MEMCALL memr_reads(UINT seg, UINT off, void *dat, UINT leng); +void MEMCALL memr_writes(UINT seg, UINT off, const void *dat, UINT leng); -void MEMCALL i286_memorywrite(UINT32 address, REG8 value) GCC_ATTR_REGPARM; -void MEMCALL i286_memorywrite_w(UINT32 address, REG16 value) GCC_ATTR_REGPARM; -void MEMCALL i286_memorywrite_d(UINT32 address, UINT32 value) GCC_ATTR_REGPARM; -REG8 MEMCALL i286_memoryread(UINT32 address) GCC_ATTR_REGPARM; -REG16 MEMCALL i286_memoryread_w(UINT32 address) GCC_ATTR_REGPARM; -UINT32 MEMCALL i286_memoryread_d(UINT32 address) GCC_ATTR_REGPARM; - -#ifdef NP2_MEMORY_ASM -REG8 MEMCALL i286_membyte_read(UINT seg, UINT off) GCC_ATTR_REGPARM; -REG16 MEMCALL i286_memword_read(UINT seg, UINT off) GCC_ATTR_REGPARM; -void MEMCALL i286_membyte_write(UINT seg, UINT off, REG8 dat) GCC_ATTR_REGPARM; -void MEMCALL i286_memword_write(UINT seg, UINT off, REG16 dat) GCC_ATTR_REGPARM; -#else -#define i286_membyte_read(a, b) \ - i286_memoryread(((UINT32)(a) << 4) + (UINT16)(b)) -#define i286_memword_read(a, b) \ - i286_memoryread_w(((UINT32)(a) << 4) + (UINT16)(b)) - -#define i286_membyte_write(a, b, c) \ - i286_memorywrite(((UINT32)(a) << 4) + (UINT16)(b), (c)) -#define i286_memword_write(a, b, c) \ - i286_memorywrite_w(((UINT32)(a) << 4) + (UINT16)(b), (c)) +#ifdef __cplusplus +} #endif -void MEMCALL memp_read(UINT32 address, void *dat, UINT leng) GCC_ATTR_REGPARM; -void MEMCALL memp_write(UINT32 address, const void *dat, UINT leng) GCC_ATTR_REGPARM; -REG8 MEMCALL meml_read8(UINT seg, UINT off) GCC_ATTR_REGPARM; -REG16 MEMCALL meml_read16(UINT seg, UINT off) GCC_ATTR_REGPARM; -void MEMCALL meml_write8(UINT seg, UINT off, REG8 dat) GCC_ATTR_REGPARM; -void MEMCALL meml_write16(UINT seg, UINT off, REG16 dat) GCC_ATTR_REGPARM; -void MEMCALL meml_readstr(UINT seg, UINT off, void *dat, UINT leng) GCC_ATTR_REGPARM; -void MEMCALL meml_writestr(UINT seg, UINT off, const void *dat, UINT leng) GCC_ATTR_REGPARM; -void MEMCALL meml_read(UINT32 address, void *dat, UINT leng) GCC_ATTR_REGPARM; -void MEMCALL meml_write(UINT32 address, const void *dat, UINT leng) GCC_ATTR_REGPARM; +// ---- Memory map +#define MEMM_ARCH(t) memm_arch(t) +#define MEMM_VRAM(o) memm_vram(o) // ---- Physical Space (DMA) #define MEMP_READ8(addr) \ - i286_memoryread((addr)) + memp_read8((addr)) +#define MEMP_READ16(addr) \ + memp_read16((addr)) +#define MEMP_READ32(addr) \ + memp_read32((addr)) #define MEMP_WRITE8(addr, dat) \ - i286_memorywrite((addr), (dat)) - -#define MEMP_READ(addr, dat, leng) \ - memp_read((addr), (dat), (leng)) -#define MEMP_WRITE(addr, dat, leng) \ - memp_write((addr), (dat), (leng)) + memp_write8((addr), (dat)) +#define MEMP_WRITE16(addr, dat) \ + memp_write16((addr), (dat)) +#define MEMP_WRITE32(addr, dat) \ + memp_write32((addr), (dat)) +#define MEMP_READS(addr, dat, leng) \ + memp_reads((addr), (dat), (leng)) +#define MEMP_WRITES(addr, dat, leng) \ + memp_writes((addr), (dat), (leng)) // ---- Logical Space (BIOS) -#define MEML_READ8(seg, off) \ - meml_read8((seg), (off)) -#define MEML_READ16(seg, off) \ - meml_read16((seg), (off)) -#define MEML_WRITE8(seg, off, dat) \ - meml_write8((seg), (off), (dat)) -#define MEML_WRITE16(seg, off, dat) \ - meml_write16((seg), (off), (dat)) -#define MEML_READSTR(seg, off, dat, leng) \ - meml_readstr((seg), (off), (dat), (leng)) -#define MEML_WRITESTR(seg, off, dat, leng) \ - meml_writestr((seg), (off), (dat), (leng)) -#define MEML_READ(addr, dat, leng) \ - meml_read((addr), (dat), (leng)) -#define MEML_WRITE(addr, dat, leng) \ - meml_write((addr), (dat), (leng)) - -#ifdef __cplusplus -} -#endif +#define MEML_READ8(addr) \ + meml_read8((addr)) +#define MEML_READ16(addr) \ + meml_read16((addr)) +#define MEML_READ32(addr) \ + meml_read32((addr)) +#define MEML_WRITE8(addr, dat) \ + meml_write8((addr), (dat)) +#define MEML_WRITE16(addr, dat) \ + meml_write16((addr), (dat)) +#define MEML_WRITE32(addr, dat) \ + meml_write32((addr), (dat)) +#define MEML_READS(addr, dat, leng) \ + meml_reads((addr), (dat), (leng)) +#define MEML_WRITES(addr, dat, leng) \ + meml_writes((addr), (dat), (leng)) + +#define MEMR_READ8(seg, off) \ + memr_read8((seg), (off)) +#define MEMR_READ16(seg, off) \ + memr_read16((seg), (off)) +#define MEMR_WRITE8(seg, off, dat) \ + memr_write8((seg), (off), (dat)) +#define MEMR_WRITE16(seg, off, dat) \ + memr_write16((seg), (off), (dat)) +#define MEMR_READS(seg, off, dat, leng) \ + memr_reads((seg), (off), (dat), (leng)) +#define MEMR_WRITES(seg, off, dat, leng) \ + memr_writes((seg), (off), (dat), (leng)) #endif /* !NP2_I386C_MEMORY_H__ */